Java 中的整数缓存:了解优化
最近的观察引起了有关 Java 中 Integer 对象行为的混乱。代码示例演示了相等运算符对于两个等于 1000 的 Integer 实例返回“false”,但对于两个等于 100 的实例返回“true”。
这个看似悖论源于 Java 的整数缓存机制。为了优化性能并减少内存占用,Java 虚拟机 (JVM) 缓存 -128 到 127 之间的 Integer 对象。这意味着对此范围内的 Integer 实例的引用始终相同。
因此,在第二个代码片段,其中 Integer 实例代表值 100,“c”和“d”都指向同一个缓存对象,比较它们的相等性时结果为“true”。但是,对于超出此范围的值(例如 1000),会创建不同的 Integer 对象,因此比较结果为“假”。
此优化通过减少内存使用来影响性能,从而提高缓存利用率。它还消除了为常用整数创建新对象的开销,从而使代码执行速度更快。
有关此主题的进一步研究可以在以下资源中找到:
以上是为什么 Java 中的'Integer”相等有时会返回'false”?的详细内容。更多信息请关注PHP中文网其他相关文章!