首页 > Java > java教程 > 为什么 Java 中的'Integer”相等有时会返回'false”?

为什么 Java 中的'Integer”相等有时会返回'false”?

Mary-Kate Olsen
发布: 2024-11-30 03:08:13
原创
288 人浏览过

Why Does `Integer` Equality Sometimes Return `false` in Java?

Java 中的整数缓存:了解优化

最近的观察引起了有关 Java 中 Integer 对象行为的混乱。代码示例演示了相等运算符对于两个等于 1000 的 Integer 实例返回“false”,但对于两个等于 100 的实例返回“true”。

这个看似悖论源于 Java 的整数缓存机制。为了优化性能并减少内存占用,Java 虚拟机 (JVM) 缓存 -128 到 127 之间的 Integer 对象。这意味着对此范围内的 Integer 实例的引用始终相同。

因此,在第二个代码片段,其中 Integer 实例代表值 100,“c”和“d”都指向同一个缓存对象,比较它们的相等性时结果为“true”。但是,对于超出此范围的值(例如 1000),会创建不同的 Integer 对象,因此比较结果为“假”。

此优化通过减少内存使用来影响性能,从而提高缓存利用率。它还消除了为常用整数创建新对象的开销,从而使代码执行速度更快。

有关此主题的进一步研究可以在以下资源中找到:

  • [Oracle 的 Java性能调优指南](https://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-tuning-6.html#integer_caching)
  • 【Java 和 C 中整数运算的优化](https://coincidental.com/research/number-boxes.pdf)

以上是为什么 Java 中的'Integer”相等有时会返回'false”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板