1111
1 Integer integer = new Integer(200);
2 Integer integer2 = new Integer(200);
3 System.out.println(integer.equals(integer2)); // true
4 System.out.println(integer == integer2); // false
- 第三行的問題是使用了equals方法,在底層重寫了equals的判斷方式
- 第四行的問題是直接使用到了 == 而, **==**在比較引用類型的時候直接比較的是兩個對象引用的地址, 那麼new出來的地址肯定是兩個不相同的地址
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
integer 的equals的重寫方式的源碼如下,上
後序補充吧, 我還是覺得,下面這個代碼有點看不明白
return value == ((Integer)obj).intValue();
放在了常量池? 緩存池?
其他的類型應該也是一樣的情況,待實驗.