如下代码,执行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