java - 整数和双差

标签 java

提前致谢... 请解释为什么会发生以下情况:

Integer i1 = 6;
Integer i2 = 6;

(i1 == i2) 将返回 true。

同时

Double d1 = 6.5;
Double d2 = 6.5;

(d1 == d2) 将返回 false。

这是为什么呢?在这两种情况下都只会创建一个对象,但它们的行为不同。使用 equals 方法会更好,但我对这种行为感到惊讶,只是想知道。

最佳答案

您正在通过引用比较 Integer(大写 I)对象,这不是在 java 中比较对象的“正确”方法。

对某些整数的引用会被缓存以优化性能。这就是为什么通过引用比较某些 Integer(大写 I)对象似乎在 Java 中的某些情况下有效。

这不是 Java 开发人员应该依赖或使用的行为,因为它不可靠,可能会发生变化,并且会使代码更难以理解。

关于java - 整数和双差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21290664/

相关文章:

java - ViewPager 仅在网络调用成功后加载

java - 有没有办法自定义JLabel?

java - AWS Toolkit for Eclipse Mars 在启动时出错

java - 是否需要使用 PGP 签名对 JAR 文件进行签名才能在 Maven 中心发布?

java - 被java语法搞糊涂了

java - 从 ArrayList 中删除对象时应用程序崩溃

java - 使用 class.getResource() 在 .jar 中加载文件?

java - 检查字符串 C 是否是 A 和 B 的交错

java - 无法在 64 位 JVM 上加载 32 位 SWT 库

java - Jetty 在 8u60 中表现不同?