上代码
byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7=125;
b6=b4+b5; //(1)不会发生编译错误
b3=(b1+b2); //(2)会发生编译错误
b8=b5+b7; //(3)会发生编译错误
System.out.println(b3+b6);
代码块(2)位置肯定会出现编译错误。
具体原因
b1和b2在相加时会发生类型提升,变为int,将一个int赋值给一个byte编译出错。
看代码块(1)(3)
代码块(1)位置编译不会出错。
代码块(3)位置编译出错。
具体原因
因为被final修饰的变量,在编译阶段就确定了该变量的值,并且不能再改变。
b4 + b5的值未超出byte的范围不会报编译错误。
b5 + b7的值131超出byte的范围不会报编译错误。