short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 +=1;有什么错?

1) 对于 short s1=1;s1=s1+1 来说,在s1+1 运算时会自动提升表达式的类型为 int, 那么将int赋予给 short类型的变量 s1会出现类型转换错误。

2) 对于 short s1=1; s1+=1 来说 +=是java 语言规定的运算符,相当于是  s1 = (short)(s1+ 1) ,因此java 编译器会对它 进行特殊处理,因此可以正确编译。