嗨,我正在修改和理解等于()和'==‘之间的区别,但是这段代码确实让我感到困惑:
public class MyTest {
public static void main(String[] args) {
Integer w = new Integer(1);
Integer x = 1;
double z = x;
System.out.println(z == w);
}
}当使用'==‘时,双重对象如何在内存中具有与Integer对象相同的引用?无法理解这一点。感谢您的阅读!
发布于 2014-05-21 13:12:39
发布于 2014-05-21 13:15:04
double不是引用,因为它是一个基本类型。相反,它是一个值。Double应该是一个参考。
在编写z == w时,z是double-typed,w是Integer-typed,运行时肯定需要进行比较。而且,很明显,它必须对同类事物进行比较。它不会将double值与Integer引用进行比较。相反,它将解压缩Integer,并将取消装箱后获得的int值与double值进行比较。两者都是1,布尔运算符将返回true。
发布于 2014-05-21 13:21:26
这里没有比较对象,而是将primitive类型与Integer的取消装箱的feature进行了比较。
https://stackoverflow.com/questions/23784175
复制相似问题