Skip to content
本站總訪問量
本站訪客數 人次

Integer 和 int 的差別

有差別!兩者是不同的資料類型:

int (基本資料類型)

java
int number = scanner.nextInt();
  • 基本資料類型 (primitive type)
  • 直接儲存數值
  • 佔用 4 bytes 記憶體
  • 不能為 null
  • 效能較好

Integer (包裝類別)

java
Integer number = scanner.nextInt();
  • 物件類型 (wrapper class)
  • 儲存物件參考
  • 佔用更多記憶體 (物件標頭 + 4 bytes)
  • 可以為 null
  • 提供額外的方法

自動裝箱/拆箱 (Autoboxing/Unboxing)

Java 會自動轉換:

java
// 自動裝箱:int → Integer
Integer number = 5;           // 等同於 Integer.valueOf(5)
Integer number2 = scanner.nextInt(); // scanner.nextInt() 回傳 int,自動轉為 Integer

// 自動拆箱:Integer → int  
int value = number;           // 等同於 number.intValue()

實際差異範例

java
// int 不能為 null
int num1 = null;              // ❌ 編譯錯誤

// Integer 可以為 null
Integer num2 = null;          // ✅ 正確
if (num2 == null) {
    System.out.println("沒有值");
}

// Integer 有額外方法
Integer num3 = 123;
String str = num3.toString(); // 轉為字串
int max = Integer.MAX_VALUE;  // 取得最大值

使用建議

  • 一般計算:使用 int(效能較好)
  • 需要 null 值:使用 Integer
  • 集合類別:必須使用 Integer(如 List<Integer>

Contributors

The avatar of contributor named as lucashsu95 lucashsu95

Changelog