Java中自動裝箱的整型物件的比較\n


當我們將一個int賦值給Integer物件時,它首先會被轉換為Integer物件,然後才會賦值。此過程被稱為自動裝箱。但在使用 == 運算子比較此類物件時,您應該注意某些事項。請先參閱以下示例。

示例

執行演示

public class Tester {
   public static void main(String[] args) {

      Integer i1 = new Integer(100);
      Integer i2 = 100;        
      //Scenario 1:
      System.out.println("Scenario 1: " + (i1 == i2));

      Integer i3 = 100;
      Integer i4 = 100;        
      //Scenario 2:
      System.out.println("Scenario 2: " + (i3 == i4));

      Integer i5 = 200;
      Integer i6 = 200;        
      //Scenario 3:
      System.out.println("Scenario 3: " + (i5 == i6));

      Integer i7 = new Integer(100);
      Integer i8 = new Integer(100);
      //Scenario 4:
      System.out.println("Scenario 4: " + (i7 == i8));
   }
}

輸出

Scenario 1: false
Scenario 2: true
Scenario 3: false
Scenario 4: false
  • 場景 1 - 兩個 Integer 物件被建立。第二個是自動裝箱導致的。== 運算子返回 false。

  • 場景 2 - 自動裝箱後只建立一個物件,並將它快取起來,因為如果值在 -127 到 127 之間,Java 會快取物件。== 運算子返回 true。

  • 場景 3 - 自動裝箱導致兩個 Integer 物件被建立,且未進行快取。== 運算子返回 false。

  • 場景 4 - 兩個 Integer 物件被建立。== 運算子返回 false。

更新時間: 2020年6月18日

247 次瀏覽

開啟您的 職業生涯

完成課程並獲得認證

開始
廣告
© . All rights reserved.