Java整数基本类型几个注意点

  1. Java中任何一个 整数型字面量 都会默认被当作int处理

int a = 100;
(=是赋值运算符,=右边先执行
程序先执行右边,分配一块空间去存储100这个数字,给100分配的是四个字节(当作int处理)
a变量也是int类型,所以不存在类型转换)

  1. 如果整形字面量后面添加L或者l,那么这个整形字面量就会被当作long类型来处理了

long b = 100;
(程序先执行右边,分配一块空间去存储100这个数字,给100分配的是四个字节(当作int处理)
b变量是long类型,所以存在自动类型转换)

long c = 100L; (100L指定了long类型,所以直接分配了八个字节不存在类型转换)

long d = 2147483647; (int类型最大值) 直接当作int类型处理,存在自动类型转换

long e = 2147483648; (超过int范围) 整数太大不能当作int类型处理了,编译报错

3.当一个整数型字面量没有超过byte的取值范围的时候,可以直接赋值给byte类型的变量不需要强制类型转换
eg: byte a = 1 可以编译通过
byte b = (byte)128 强制类型转换,会有精度丢失
4.当一个整数型字面量没有超过short的取值范围的时候,可以直接赋值给short类型的变量不需要强制类型转换

5.当两个int类型的数据进行运算之后,结果还是int类型

6.多种数据类型在混合运算的时候,先各自转换成最大的数据类型,再做运算
byte x = 1;
short y = 1;
int z = 1;
int res = x + y + z;

7.byte和short混合运算的时候,各自先转换成int再做运算
eg: byte + byte --> int
short + byte --> int
short + short --> int

 编译优化 10 / 3 在编译阶段会直接计算出结果是3
          byte a = 10 / 3;

          byte b = 10;
          byte c = 3;
          byte d = b / c;
          注意   byte d = b / c; 编译报错,因为第3条使得 b / c结果为int类型 但是接收用的是byte类型需要强制转换类型
posted @ 2025-05-07 19:16  如夢初醒  阅读(6)  评论(0)    收藏  举报