源码:public static final int MIN_VALUE = 0x80000000;
public static final int MAX_VALUE = 0x7fffffff;
前提:十进制负数是以补码的形式存储在内存中的,而十六进制负数是以原码的形式存储在内存中的,并且最高位是符号位,后面的31位为序号位,不是值位
MIN_VALUE = 0x80000000(原码),转换成2进制就是 1000 0000 0000 0000 0000 0000 0000 0000,最高位是1,即负数,后面31位全是0,表示最小数(从小到大的第一个数),int是32位,它的范围就是[-2^31, 2^31 - 1],所以MIN_VALUE 就等于-2^31,
MAX_VALUE = 0x7fffffff, 转换成2进制就是 0111 1111 1111 1111 1111 1111 1111 1111, 十进制就是2^31 - 1
也就是说MIN_VALUE 其实是32位int的最小值
MAX_VALUE 其实是32位int的最大值