關於Integer比較相等的問題
阿新 • • 發佈:2019-02-06
作為一個菜雞,記下來免得忘了。
1.通過new出來的兩個Integer物件比較時,==是比較的物件地址,等同於一般物件比較的==,equals則會比較其內部的int值是否相等。因為內部重寫了equals方法:
public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }
2.不是通過new出來的兩個Integer物件比較時(Integer i=100或者Integer i=Integer.valueOf(100)
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }菜雞一枚,如果有錯誤之處,希望大佬指出來,謝謝。