byte a = 1;
a += 1;
a = a + 1;//该行会报错
改为a=(byte)(a+1);就不会报错了。
那么a+=1为什么就不报错呢,反编译看下,发现就是上面我们修改后的结果a=(byte)(a+1);也就是碰到简式运算符,jvm自动帮我们做了转换。
当然,这里a定义为long型,两个都不会报错。
byte a = 1;
a += 1;
a = a + 1;//该行会报错
改为a=(byte)(a+1);就不会报错了。
那么a+=1为什么就不报错呢,反编译看下,发现就是上面我们修改后的结果a=(byte)(a+1);也就是碰到简式运算符,jvm自动帮我们做了转换。
当然,这里a定义为long型,两个都不会报错。