int x = ?;
if(x > Integer.MAX_VALUE)
{
System.out.println(x);
}
当上述条件成立时??? x的价值是多少? Integer.MAX_VALUE = 0x7fffffff,我尝试使用十六进制的0x80000000 x。但x现在是负数。
答案 0 :(得分:0)
Java整数是32位,超过32位数最大值的任何内容都将被翻转并变为负数。这称为整数溢出。
如果你有:
int x = Integer.MAX_VALUE;
x += 1;
x
将等于-2147483648
或Integer.MIN_VALUE
。
答案 1 :(得分:0)
没有x
。
来自Java docs:
int :默认情况下,int数据类型是32位带符号的二进制补码整数,其最小值为-2 ^ 31且最大值< /强> 值2 ^ 31-1 。
最大32位值等于0111 1111 1111 1111 1111 1111 1111 1111
。
它是2's complement表示,因此将第1位设置为1将导致负数(0x80000000 = 1000..0000)。因此,您正在寻找的x
确实没有任何价值。