+=与byte254
分析
带符号数byte,byte范围-128~127
强制类型转换(byte)254 = -2,原因:254二进制->11111110,强制转换,首位1被看做符号位。
1-负数,0-正数,由于负数是使用补码的形式表示,转换成原码步骤减去1取反->10000010,即-2;
这是我看到一道面试题分析的,题目是这样的:
尝试分析:
java
byte a = 127;
byte b = 127;
a = a + b;// 错误
a += b;// 正确
分析:a + b会提升ab为int型进行计算,所以无论ab等于多少,这样做都会报错,而a+=b输出a=-2,原因是+=会隐式的将计算结果转换成a的类型,即a = (byte)254 = -2;