short s1 = 1; s1 = s1 + 1;
有错,s1是short型,s1+1是int型,不能显式转化为short型
short+int编译器为了避免内存溢出,就给它向上转型(int) 而int不能直接付给short所以编译时就会报错,而s1+=1时,底层会帮我们自动强制类型转换把int转成short
可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确
short s1 = 1; s1 += 1为什么正确?
s1+= 1; 这种写法,强制把1转换成short类型了,就不会报错了。
tips:隐式转换和强制转换:
参考:Java中的自动类型转换/隐式类型转换