例如:
public static void main(String[] args) { byte b1 = 3; byte b2 = b1 + 6; // 编译器报错,原因类型转换错误,上面讲到整数字面量是int类型,所以3是int类型,b1+6计算结果也为int类型 byte b3 = (byte) (b1 + 6);// 强转成byte int b4 = b1 + 6;// 或把byte改为int接收 byte b5 = 124 + 3;// 不报错,原因:java语言对于明显的,能确定出结果的计算都会在编译器编译时把这个值直接计算完保存在变量b5中,在解释运行时不再计算124+3,而直接b2中存储结果127,所以这行代码等效于byte b5 = 127; byte b6 = 124 + 4;// 编译器报错,原因124+4=128超出byte的最大值,改成用int接收一下就不报错了 }