s = s+ 1 与s +=1是不等价的,s += 1是等价于 s = (s的数据类型)(s + 1),而不是等价于 s = s + 1,当中存在隐含了一个强制类型转换的过程。
比如
- public class Test {
- public static void main(String[] args) {
- byte b = 127;
- //b = b + 1; //在Eclipse上提示有错
- //b = (byte) (b + 1); //在Eclipse上没有提示
- b += 1; //在Eclipse上没有提示错误,与b = (byte) (b + 1)等价
- System.out.println(b);
- }
- }