【发布时间】:2013-07-05 17:32:18
【问题描述】:
我正在比较两段代码。首先
Integer i=3;
Integer j=3;
if(i==j)
System.out.println("i==j"); //prints i==j
第二,
Integer i=3;
Integer j=new Integer(3);
if(i==j)
System.out.println("i==j"); // does not print
我怀疑在第一个 sn-p 中为什么要打印i==j?引用不应该不同吗?
【问题讨论】:
-
与reference、new、Objects、比较内存地址有关#Idk #CIS20...Somthing
-
==在分配时比较引用而不是值。在第一种情况下,i、j都指向内存中的相同整数。在第二种情况下,使用 new 创建两个具有相同值 3 的对象整数的新实例。 -
这不是链接问题的副本。请注意,由于
new Integer(1) == new Integer(1)的错误前提,该问题被关闭为“不是一个真正的问题”,这是不正确的。 -
@JohnKugelman - 这是同一个问题,只是颠倒了,该问题的答案涵盖了。
-
@AMR:不,根本不是这样。
标签: java