如下代码,执行test()函数后,屏幕打印结果为?
public class Test2
{
public void add(Byte b)
{
b = b++;
}
public void test()
{
Byte a = 127;
Byte b = 127;
add(++a);
System.out.print(a + " ");
add(b);
System.out.print(b + "");
}
public static void main(String[] args) {
new Test2().test();
}
}
程序的输出结果为
-128 127
原因:
java字节型byte的取值范围是-128~127(-2⁷~2⁷-1)。
127的2进制表示为01111111 加1后就是10000000
根据补码的定义,最高位为符号位,128(补码的真值)= 256(2⁸) - |-128(原码)|
在计算机中表示时是补码10000000,输出时却是原码-128
本文通过一个具体的Java代码示例展示了Byte类型在进行算术运算时可能遇到的溢出问题,并解释了溢出后的数值如何转换及显示。
3593

被折叠的 条评论
为什么被折叠?



