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

解决方案 »

  1.   

    为什么short s1 = 1; s1 = s1 + 1错;  s1变成int型(需要强制类型转换)
    为什么short s1 = 1; s1 += 1正确。+=之后s1为short型(不需要转换)
      

  2.   

    s1 = s1 + 1 中的 1 默认为int型,所以s1+1 为short+int=int 结果为int型
    将int型的结果赋给short型的s1当然错了.
    s1 += 1没有这问题。
      

  3.   

    byte +byte=int
    short +byte=int
    int+short=int
    long+byte=long
      

  4.   

    看一下虚拟机的指令码就知道了,
    short s1 = 1; s1 = s1 + 1错;
    short s1 = 1; s1 += 1正确。
    第二个java虚拟机会自动进行类型转换i2s