问题
为什么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