这个问题和+=的运算功能有关
第一种方式:
byte b = 3; b = b+2;需强行转化
因为byte b = 3在栈中开辟了一个byte类型的空间;
而b = b+2中b是byte类型,在栈中开辟了一个byte类型的空间,而2是int类型,
int类型比byte类型大,所以相加后的结果应为比较大的类型,把b+2的结果赋予byte类型的变量b,固然需要强行转化;
第二种方式:
b+=2;(可以正确编译)
由于+=运算符有自加功能,定义byte b = 3;时,开辟了一个空间,当通过+=运算符运算时,只是在原来的栈中进行运算;不需强行转化; |