Integer使用==比較的問題
-
new一個物件
public Integer(int value) { this.value = https://www.cnblogs.com/weilx/archive/2023/03/01/value; } -
自動裝箱
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } -
自動拆箱
public int intValue() { return value; }總結:
- int 和 int 比較,比較的是字面量的值,使用==始終是true
- int 和 integer 比較,由于 integer 會發生自動拆箱,也是true
- integer 和 integer 比較:
- 若兩個都是new出來的物件,則始終是false
- 若一個是new,一個是非new(包括字面量 || Integer.valueOf( )等),那么一個是自動裝箱的物件,一個是new出來的物件,始終flase
- 兩個都不是new出來的,都會發生自動裝箱,就需要看值的范圍,在-128-127的范圍內,會獲取IntegerCache里的物件,這樣就是true,范圍外的還是false

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/545406.html
標籤:其他
