1. 自动装箱与缓存机制
在 Java 中,整数值在 -128 到 127 之间时,Integer 类会缓存这些值。即在这个范围内的整数会共享同一个对象实例。因此,当两个整数在该范围内进行比较时(如 100 == 100),返回的是 true,因为它们指向的是相同的缓存对象。
2. 大于 127 的整数不共享同一实例
超过 127 的整数不在缓存范围内,因此每次装箱都会创建一个新的 Integer 对象。所以对于 “1000=1000”,两个 Integer 对象的地址不同,因此 == 比较返回 false。
示例代码
以下代码演示了 Integer 的缓存机制:
1 | 复制代码 |
总结
Integer 缓存范围:-128 到 127。
在这个范围内,比较两个相等的 Integer 返回 true。
超出范围时,装箱生成的新对象实例地址不同,比较返回 false。
因此,比较整数时,推荐使用 equals() 方法而非 ==。