public class Test {
public static void main(String[] args) {
byte a = 1;
byte b = 6;
byte c = a + b;//无法编译通过
byte d = 1+5;//编译通过,6在byte表数范围,使用发编译工具jd反编译class后得到的byte d = 6
byte e = 127+1;//无法编译通过,结果已经超出byte表数范围
}
}
总结:1.对于常量的运算,编译器会做预处理,会在编译时预处理运算后是否还在基本数据类型表数范围之内;
2.对于变量的运算,因为无法确定运行时的状况,未避免失去精度,无法编译通过.