s + = 5能够通过编译,而s = s + 5则不能
理由:s的类型是short, 5的类型是int, int与short型数据相加时,short数据类型提升为int, 故结果的int,
再通过=进行赋值时,右边的int无法直接赋值给左边的short,故无法通过编译。
至于s += 5 为什么能够通过呢?其实,这里有一个隐式转换的问题
所有双目运算符与=一起结合成符号赋值运算符,如+=、-=等都隐含了一句话
s + = 5 ;等价于 s = (short) (s + 5);
所以能够通过,其实对于这个能通过的说法有很多,我只是说一种
希望对楼主有所帮助,错误之处,大家多多指正
|