我们先看一段代码:
1 byte b=2;2 b=b+1;3 System.out.println(b);
运行结果:
错误: 不兼容的类型: 从int转换到byte可能会有损失
b=b+1;
^
1 个错误
报错的原因是short变量在参与运算时会自动提升为int类型,b+1运算完成后变为int,int赋值给short报错。
换成+=的情况:
1 byte b=2;2 b+=1;3 System.out.println(b);
编译通过,输出结果3。
这是因为b+=1并不是完全等价于b=b+1,而是隐含了强制类型转换,相当于b=(short)(b+1)。
注意:+=不会进行溢出检查
1 byte b=127;2 b+=1;3 System.out.println(b);
输出结果是-128,开发中要特别注意。