1. int型或者比int小的类型进行算术运算结果都是int型
byte a = 1;
byte b = 2;
byte c = a + b;
编译器会提示错误:Type mismatch: cannot convert from int to byte
虽然1+2的结果3没有超出byte表示的范围,但是两个byte进行运算结果为int,不能直接将int型转换成byte,除非显式转型
byte c = (byte)(a + b);
这样是OK的。
2. 结果超出范围还进行显式转换编译器不会报错
byte a = 86;
byte b = 42;
byte c = (byte)(a + b);
显然结果为128,超出了-128 - 127的表示范围,这时的显式转换会自动截取超出的部分,留下剩余的值进行表示,结果为-128.
3. 使用+=、-=、*=、/=会进行隐式转型
byte a = 1;
byte a += 2;
这样也是OK的,因为+=、-=、*=、/=会进行隐式的自动类型转型,
类似语句:byte a = (byte)( a + 2);