+=与byte254

568#9f00521d

一道面试题问byte a = 127, byte b = 127; 问a = a + b和 a += b的区别;为什么(byte)254=-2?

分析

带符号数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;

参与本文讨论

请先登录 GitHub 后留言

0/500

本文留言

0

这篇文章还没有留言,来写第一条吧。

1 / 1