Java 中 null 和空數組的區別
1. 概述
在本教程中,我們將探討 Java 中null
數組和空數組之間的差異。雖然它們聽起來很相似,但null
和空數組具有不同的行為,並且對於正確處理至關重要。
讓我們探討一下它們是如何運作的以及它們為何重要。
2. Java中的null
數組
Java 中的null
數組表示數組引用不指向記憶體中的任何物件。 Java 預設將引用變數(包括陣列)初始化為 null,除非我們明確賦值。
如果我們嘗試存取或操作null
數組,它會觸發NullPointerException
,這是一個常見錯誤,表示嘗試使用未初始化的物件參考:
@Test
public void givenNullArray_whenAccessLength_thenThrowsNullPointerException() {
int[] nullArray = null;
assertThrows(NullPointerException.class, () -> {
int length = nullArray.length;
});
}
在上面的測試案例中,我們嘗試存取null
數組的長度,結果導致NullPointerException.
測試案例執行沒有失敗,驗證是否引發了NullPointerException
。
正確處理null
數組通常涉及在執行任何操作之前檢查null
以避免運行時異常。
3.Java中的空數組
Java 中的空數組是已實例化但包含零個元素的陣列。這意味著它是一個有效的數組對象,並且可以在操作中使用,儘管它不包含任何值。當我們實例化一個空數組時,Java 會為數組結構分配內存,但不儲存任何元素。
需要注意的是,當我們建立一個非空數組而不為其元素指定值時,它們預設為類似零的值 - 整數數組為 0,布林數組為false
,物件數組為null
:
@Test
public void givenEmptyArray_whenCheckLength_thenReturnsZero() {
int[] emptyArray = new int[0];
assertEquals(0, emptyArray.length);
}
上面的測試案例執行成功,證明空數組的長度為零,並且在存取時不會導致任何異常。
空數組通常用於稍後初始化具有固定大小的數組或表示目前不存在任何元素。
4. 結論
在本文中,我們研究了 Java 中null
數組和空數組之間的差異。 null
數組表示數組引用不指向任何對象,如果在沒有正確的null
檢查的情況下訪問,則會導致潛在的NullPointerException
錯誤。另一方面,空數組是一個有效的、沒有元素的實例化數組,提供零長度並支援安全操作。
這些測試的完整原始碼可在 GitHub 上取得。