== 、 != 兩邊的操作數(shù)既可以是數(shù)值類型,也可以是引用類型。這句話我不理解
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); ????} }
這段程序最后輸出的結(jié)果先是false,然后是true。
這是為什么?很不理解。
2019-11-16
查了下資料. new 出來(lái)的對(duì)象是存放在堆里面的,== 時(shí)比較的是地址;
也可以直接比較對(duì)象的值,比如n1.compareTo(n2) 或n1.intValue() == n2.intValue()
試了假如直接賦值比較則是相等的, 可能直接賦值是存在棧里面就直接比較值:
Integer?n1?=?
47
;
????????
Integer?n2?=?
47
;
n1 == n2 //true