2018-09-14 孙小北

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)

代码:

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类型和其他基本数据类型之间不能相互转换。

转换规则是先转换为高位数据类型再进行计算,结果是高位类型。

如果采用+=、*=等运算符时,系统会自动强转类型为高位类型。


编辑:孙小北

本文地址: http://www.xiaowangyun.com/wyblog/detail/?id=241

版权归属: www.xiaowangyun.com   转载时请以链接形式注明出处

物以类聚

最新评论

2017-10-06

一辈子不长,只有珍惜了,才不至于后悔。

2017-10-06

懂得感恩,才能走得更远。

标签云

归档

取消

感谢您的支持,您的每一次打赏都是一次鼓励!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦