提前致谢... 请解释为什么会发生以下情况:
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/