首页 >Java >java教程 >Java 整数比较:什么时候'==”有效,什么时候应该使用'equals()”?

Java 整数比较:什么时候'==”有效,什么时候应该使用'equals()”?

Patricia Arquette
Patricia Arquette原创
2024-12-25 22:49:16897浏览

Java Integer Comparison: When Does `==` Work, and When Should You Use `equals()`?

整数引用相等与值相等

在 Java 中,像 int 这样的原语和像 Integer 这样的对象包装器是不可互换的。该问题提出了一个问题,即使用 == 错误地比较具有相等 int 值的 Integer 对象,从而导致意外的真实结果。

答案在于 JVM 对 Integer 值的缓存。出于性能原因,JVM 在特定范围(-128 到 127)内重用预分配的对象。当使用 == 比较 Integer 对象时,JVM 检查引用相等性,而不是值相等性。对于此缓存范围内的值,引用相等意味着值相等。

但是,在提供的代码示例中,Integer 值在此缓存范围之外,因此引用相等并不能保证值相等。相反,应该使用 equals() 来比较整数值是否相等。

问题答案中引用的 stackoverflow 链接提供了对自动装箱的复杂性以及为什么编译器不能总是“使其正常工作”的进一步见解。

总之,虽然对基元使用 == 很方便,但在处理像 Integer 这样的对象包装器时,了解引用相等的限制至关重要。对于值相等比较,应使用 equals()。

以上是Java 整数比较:什么时候'==”有效,什么时候应该使用'equals()”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn