java的基本数据类型

前言

Java的基本数据类型是Java语言中预定义的、不可再分割的数据类型。它们直接存储数据值,而不是对象的引用。Java的基本数据类型有以下八种:

  • 整数类型:byte、short、int、long
  • 浮点类型:float、double
  • 字符类型:char
  • 布尔类型:boolean

基本数据类型的特点

数据类型大小(字节)范围或描述
byte1字节(8位)-128到127
short2字节(16位)-2^15 到 2^15 - 1
int4字节(32位)-2^31 到 2^31 -1
long8字节(64位)-2^63 到 2^63 -1
float4字节(32位)单精度浮点数,遵循IEEE 754标准,适合节省内存的场景
double8字节(64位)双精度浮点数,遵循IEEE 754标准,适合高精度的计算
char2字节(16位)Unicode字符,\u0000 到 \uffff
boolean未严格定义(通常1位或1字节)只能为true或false
byte b = 100;          // 1字节
short s = 1000;        // 2字节
int i = 100000;        // 4字节
long l = 1000000000L;  // 8字节
float f = 3.14f;       // 4字节
double d = 3.14159;   // 8字节
char c = 'A';         // 2字节
boolean flag = true;  // 通常1字节

例:
下面那段代码会输出什么?

public static void test(){
        byte a = 3, b=126;
        byte c = (byte) (a + b);
        System.out.println("value: " + c + 100);
    }

首先,看到这段代码要知道从哪方面考虑,竟然考到了最基础的东西,那就从最基础的考虑。

  • a = 3 和 b = 126因为byte的范围是-128到127,在范围之内,没问题;
  • c = a + b = 129,超出了byte的范围,在java中,超出范围的整数值会通过溢出处理,129的二进制表示为10000001,在byte类型中被解释为-127。
  • 输出语句中 “+” 操作符用于字符串拼接,由于"value: "是字符串,c会先转换为字符串,然后与100拼接;
  • 最终输出的结果是:value: -127100

二进制数值提升规则

Java中的二进制数值提升规则规定,当两个操作数进行算数运算(如加法、减法、乘法等)时,如果操作数的类型比int小(如byte、short、char),它们会先被自动提升为int类型,然后再进行运算。具体规则如下:

  • 如果操作数是byte、short或char。它们会被提升为int;
  • 如果其中一个操作数是long,则另一个操作数也会被提升为long;
  • 如果其中一个操作数是float,则另一个操作数也会被提升为float;
  • 如果其中一个操作数是double,则另一个操作数也会被提升为double。

例:

public static void test(){
        char a = '6';
        int c = a + 3;
        System.out.println(c);
    }

分析:这考的是char与int的转换,在Java中,char 类型是基于 Unicode 编码 的,而 Unicode 是 ASCII 的超集。当 char 类型与 int 类型进行运算时,char 会被自动转换为对应的 Unicode 码点值(即整数),在 Unicode 编码中,字符 ‘6’ 的码点值是 54(十进制),所以最终输出57。

总结

java的基本数据类型虽然很简单,但是如果有时候不仔细看不注意细节的话,可能连简单的问题都答不对。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值