s1=s1+1和s1+=1是有区别的。
s1=s1+1会错因为s1是short,而1是int,所以运算时会自动转换为int,再将int赋值给s1是需要强制转换,所以会错。
JAVA规范上说e1+=e2 实际上是 [color=red][size=x-large]e1=(T1)(e1+e2)],其中T1是e1的数据类型
[/size][/color]
所以s1+=1等效于s1=(short)(s1+1),所以是正确的。
s1=s1+1会错因为s1是short,而1是int,所以运算时会自动转换为int,再将int赋值给s1是需要强制转换,所以会错。
JAVA规范上说e1+=e2 实际上是 [color=red][size=x-large]e1=(T1)(e1+e2)],其中T1是e1的数据类型
[/size][/color]
所以s1+=1等效于s1=(short)(s1+1),所以是正确的。