int是32位有符号整数,取值范围为−2³¹(−2147483648)到2³¹−1(2147483647),对应integer.min_value和integer.max_value;二者不互为相反数,因补码中负数多一个值;溢出时integer.max_value + 1等于integer.min_value。

Java 中 int 类型是 32 位有符号整数,它的取值范围由二进制补码表示法决定:最高位为符号位,其余 31 位表示数值。因此,最大值是 2³¹ − 1,最小值是 −2³¹。
Integer.MAX_VALUE 和 Integer.MIN_VALUE 的真实值
这两个是 Integer 类中定义的 public static final 常量,直接对应 int 的理论极限:
- Integer.MAX_VALUE = 2147483647(即 0x7fffffff,十进制 2³¹−1)
- Integer.MIN_VALUE = -2147483648(即 0x80000000,十进制 −2³¹)
注意:它们并不互为相反数,因为补码表示下,负数比正数多一个可表示的值。这也是为什么 Integer.MAX_VALUE + 1 == Integer.MIN_VALUE(发生溢出)。
如何在代码中查看或使用这些常量
无需计算或记忆,直接调用即可:
- 打印查看:
System.out.println(Integer.MAX_VALUE); - 边界校验:
if (n > Integer.MAX_VALUE) { /* 处理溢出 */ } - 初始化默认值:
int maxSoFar = Integer.MIN_VALUE;(常用于找最大值的初始设定)
别混淆:Integer 缓存机制不影响取值范围
虽然 Integer 类对 −128 到 127 范围内的值做了缓存(自动装箱时复用对象),但这只影响对象引用比较(==)的结果,**不改变 int 本身的数值范围**。超出该范围的值依然合法,只是每次装箱会新建对象。
其他相关常量辅助理解
除了 MAX/MIN,Integer 还提供:
- SIZE = 32:表示 int 占 32 位
- BYTES = 4:表示 int 占 4 字节(JDK 8+)
-
TYPE = int.class:返回基本类型
int的 Class 对象











