日期:2014-05-20  浏览次数:20894 次

问题
为什么short   s1   =   1;   s1   =   s1   +   1错;
为什么short   s1   =   1;   s1   +=   1正确。
+   和+=有什么区别?  


------解决方案--------------------
为什么short s1 = 1; s1 = s1 + 1错; s1变成int型(需要强制类型转换)
为什么short s1 = 1; s1 += 1正确。+=之后s1为short型(不需要转换)
------解决方案--------------------
还是不懂

------解决方案--------------------
s1 = s1 + 1 中的 1 默认为int型,所以s1+1 为short+int=int 结果为int型
将int型的结果赋给short型的s1当然错了.
s1 += 1没有这问题。
------解决方案--------------------
看一下虚拟机的指令码就知道了,
short s1 = 1; s1 = s1 + 1错;
short s1 = 1; s1 += 1正确。
第二个java虚拟机会自动进行类型转换i2s