HOWTO · Java

在 Java 中檢查 Int 是否為空

如何在 Java 中檢查 int 是否為空

本頁內容

本文探討如何透過 Integer 包裝類別檢查 Java 中 int 類型的空值,並討論在處理可空整數時保持程式碼可靠、健壯的最佳實踐。

在 Java 中 int 可以為空嗎?

首先需要明確一點:int 是基本資料類型。基本類型直接保存其值,因此 int 永遠不可能是 null——它總是保存著某個數字,預設是 0。值的缺失只能用包裝類別 Integer 來表示,它的物件可以為 null。

這就是為什麼檢查很重要。在把 Integer 當作 int 使用之前——例如拆箱做運算或傳給需要 int 的地方時——必須先檢查:把為 null 的 Integer 當作 int 使用會拋出 NullPointerException。如果你需要基本值的包裝形式,可以參閱如何將 int 轉換為 Integer。

檢查 Integer 是否為空

檢查本身就是與 null 的簡單比較。下面的完整範例展示了一個基本 int、一個可空的 Integer,以及實際的檢查:

public class CheckIfIntIsNullExample {
  public static void main(String[] args) {
    // Part 1: Primitive int
    int primitiveInt = 0;
    System.out.println("Primitive int value: " + primitiveInt);

    // Part 2: Nullable Integer
    Integer nullableInt = null;
    System.out.println("Nullable Integer value: " + nullableInt);

    // Part 3: Checking for null
    if (nullableInt != null) {
      int intValue = nullableInt.intValue();
      System.out.println("Value is: " + intValue);
    } else {
      System.out.println("Value is null");
    }
  }
}

輸出:

Primitive int value: 0
Nullable Integer value: null
Value is null

程式碼的第一部分把 primitiveInt 初始化為 0,演示了基本整數的標準用法——它總是保存著一個值。第二部分把 nullableInt 宣告為 Integer 物件並設為 null,這只有包裝類別才能做到。第三部分中,if 陳述式把 nullableInt 與 null 比較:如果不為 null,就用 intValue() 取出 int 值並輸出;否則程式輸出該值為空。

處理可空整數的最佳實踐

一致的空值檢查

在對 Integer 物件執行操作或取出其底層的 int 值之前,檢查它是否為 null,並且始終這樣做。這種做法能最大限度地降低遇到 NullPointerException 的風險,提高程式碼的整體穩定性。

清晰的文檔

記錄可空整數預期出現的位置、應如何處理以及 null 值的含義。清晰的文檔可以防止意外的誤用,並幫助其他開發者理解程式碼的行為。

預設值與初始化

在適當的情況下,為可空整數提供預設值——例如在值缺失時替換一個備用值——使依賴它的操作不會意外失敗。合理的預設值讓程式碼的行為更可預測。

使用 Optional(Java 8 及更高版本)

在 Java 8 及更高版本中,Optional 類別可以在類型本身中表達值可能缺失。Optional<Integer> 提供了顯式處理有值與無值兩種情況的方法,讓程式碼中的意圖表達得更清晰、更簡潔。

異常處理

當值的缺失被視為異常情況時,要有意識地處理它——用清晰的錯誤快速失敗或顯式恢復——而不是讓 NullPointerException 在遠離其成因的地方浮現。健壯的異常處理可以防止程式意外終止。

結論

int 永遠不可能是 null;只有它的包裝類別 Integer 可以。檢查就是與 null 的簡單比較;一致地執行這一檢查——再加上清晰的文檔、合理的預設值以及在合適場景使用 Optional——就能避免 NullPointerException,保持 Java 程式碼的可靠與健壯。