short a=1;
//a= (a+1);//类型不匹配:不能从 int 转换为 short
a=(short) (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
a=(short) (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)