java中int的最大数值是2147483647
这是因为整数在内存中使用的是补码的形式表示,最高位是符号位,0表示正数,1表示负数,当你+1时已经超出了java定义的最大值。详细过程如下
也就是Integer中定义的
public static final int MAX_VALUE = 0x7fffffff;
每个
十六进制数4bit,因此8位
16进制是4个字节,刚好是一个int整型。
F的
二进制码为 1111
7的二进制码为 0111
7fffffff(十六进制) = 0 1111111111111111111111111111111(二进制)
二进制做运算+1 =1 1111111111111111111111111111111
按照规定 最高位 1表示负数 所以你的整个就变成了负数