#数据类型转换之隐式转换
A:案例演示
- a:int + int
- b:byte + int
B:Java中的默认转换规则- 取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算
A:强制转换问题
- int a = 10;
- byte b = 20;
- b = a + b;
B:强制转换的格式- b = (byte)(a + b);
C:强制转换的注意事项- 如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
A:案例演示
- 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
- byte b1 = 3;
- byte b2 = 4;
- byte b3 = b1 + b2;
- 从两方面去回答这个题
- b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
- byte类型的变量在进行运算的时候,会自动类型提升为int类型
- byte b4 = 3 + 4;
- 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
int x = 4;
int y = (x++)+(++x)+(x*10);
4 + 6 + 60 =70