首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Integer 快取機制:== 比較行為詳解

     編輯:程式設計綜合問答

代碼


Integer i01 = 2;
int i02 = 59;
Integer i03 = Integer.valueOf(59);
Integer i04 = new Integer(59);

System.out.println(i01 == i02); // false
System.out.println(i01 == i03); // false
System.out.println(i03 == i04); // false
System.out.println(i02 == i04); // true

解析

  • i01 = 2:自動裝箱 Integer.valueOf(2),命中快取(-128~127),但值為 2。
  • i02 = 59:基本型別 int。
  • i03 = Integer.valueOf(59):快取範圍內,回傳快取物件。
  • i04 = new Integer(59):新建物件,不走快取。

比較結果

  1. i01 == i02:Integer 拆箱成 int 比較值 → 2 == 59 → false。
  2. i01 == i03:兩個 Integer 物件比較參考 → 不同物件 → false(若都是快取且值相同則 true)。
  3. i03 == i04:快取物件 vs 新物件 → false。
  4. i02 == i04:int vs Integer → 拆箱比較值 → 59 == 59 → true。

核心規則

  • == 比較基本型別看值,比較物件看參考。
  • Integer.valueOf() 會快取 -128~127,超出範圍新建物件。
  • new Integer() 永遠新建物件(Java 9+ 已棄用,建議用 valueOf)。
  • 物件間比較值請用 .equals()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved