short  s1 = 1;  s1 = s1 + 1;
short  s1 = 1;  s1 += 1;以上第一句编译出错我明白道理(s1+1运算结果是int型,需要强制转换类型)
但第二句为什么能通过我就不明白了
请大虾指教我学习呀!先谢啦

解决方案 »

  1.   

    第一个里面有两个操作符: = 和 + 。
    +做的事情是两边相加,结果类型为其中比较大的那个。(这种说法不标准,大家领会精神)
    =做的事情是将右边的东西赋值到左边,左边类型比右边小的时候会出错。这就是第一个出错的原因。第二个里面只有一个操作符: += 。
    +=做的事情是将右边的数值加到左边的变量里面,类型不同时强制转换成左边类型。同时将相加结果作为操作符的结果,类型与左边变量类型相同。
    所以不出错。详细情况,参看Java Language Specification