Java中short a=1;a=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)
代码:
代码语言:javascript复制short a=1;
//a= a 1;//类型不匹配:不能从 int 转换为 short
a=(short) (a 1);
a =1;
数据类型自动转换规则:
byte --> short/char--> int -->unsigned -->long -->double -->float
注意:
byte和char、char和short之间需要相互强转;Boolean类型和其他基本数据类型之间不能相互转换。
转换规则是先转换为高位数据类型再进行计算,结果是高位类型。
如果采用 =、*=等运算符时,系统会自动强转类型为高位类型。