隐式类型转换
byte a = 3;
byte b = 4;
byte c = a + b;
System.out.println(c);
byte d = 3 + 4;
System.out.println(d);
第一个计算运行报错,在Java计算过程中高位与低位进行运算时,会先将低位转换成高位然后进行运算,当short byte 进行运算时,会自动提升为int,第四行代码在运算之前都会提升为int类型,计算后也为int类型
第二个计算正确,这在于Java的常量优化机制,3和4为常量,在运算时都为int类型,编译过程中会自动进行运算,然后看运算后的值7是否在赋值d的范围内,在这成功赋值
强制类型转换
把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
上面计算出错代码进行强制类型转换可以解决
强制类型转换问题通常会出现溢出问题,尤其是在浮点类型问题上面
注意:扩展的赋值运算符自带强转