public class Equivalence{
public static void main(String[] args){
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println(n1 == n2);
System.out.println(n1 != n2);
}
}这段程序最后输出的结果先是false,然后是true。
这是为什么?很不理解。
查了下资料. new 出来的对象是存放在堆里面的,== 时比较的是地址;
也可以直接比较对象的值,比如n1.compareTo(n2) 或n1.intValue() == n2.intValue()
试了假如直接赋值比较则是相等的, 可能直接赋值是存在栈里面就直接比较值:
Integer n1 = 47;
Integer n2 = 47;
n1 == n2 //true