Java中short a=1;a=a+1和a+=1的区别及+=的类型转换

对于short a=1; a=a+1; 由于a+1运算时会自动提升表达式的类型,也即int类型,再将结果赋值给short类型的a时,类型会不匹配;

对于short a=1; a+=1; java编译器会对+=进行特殊处理,进行了类型转换,通过反编译.class源码可以看到a+=1被编译为:

a=(short) (a+1)


short a=1;
a=a+1; //类型不兼容,报错,int类型不能转换成short,从int转换到byte可能会有损失
short b=1;
b+=1;

注意:+=不会进行溢出检查,

1 byte b=127;
2 b+=1;
3 System.out.println(b);
输出结果是-128,开发中要特别注意

猜你喜欢

转载自blog.csdn.net/qq_40434646/article/details/81367382