Java中的陣列

AisaMaral發表於2024-04-15

以二維陣列 Integer[][] MAP = new Integer[100][2]為例
實際上定義了一個包含100個元素的陣列,每個元素本身也是一個陣列,這個兩個子陣列又會包含兩個Integer。

那麼在執行 MAP[index] == null 時,實際上是判斷 MAP 陣列中第 index 個位置的元素是否為 null由於初始化了 MAPnew Integer[100][2],這表明你已經為每一個 index 從0到99分配了一個長度為2的陣列。因此,在這種初始化之後,MAP[index] 不會為 null —— 它總是指向一個長度為2的陣列

而當我們檢查MAP[index][0] == null 時,則是判斷index處的第1個元素是否為null,此時是否為null呢? 是

在Java中,對於物件型別的陣列(如 Integer 型別),陣列的預設初始化值是 null。因此,儘管 MAP[index] 是一個非 null 的陣列,MAP[index][0]MAP[index][1] 預設都是 null

當我們使用基本資料型別(如 int)或者 String 型別來定義二維陣列時,情況會有所不同。

基本資料型別 int[][] MAP = new int[100][2];:對於 int 型別的陣列,陣列的預設值是 0。所以當你檢查 MAP[index] == 0 時,這實際上是在檢查陣列的index 個位置是否包含值 0(在這種情況下,它總是 false)。如果你檢查 MAP[index][0] == 0,你是在檢查 MAP[index] 指向的陣列的第一個元素是否為 0。String 型別 String[][] MAP = new String[100][2];:

對於 String 型別的陣列,陣列的預設值是 null。當你檢查 MAP[index] == null 時,你是在檢查陣列的第 index 個位置是否為 null

如果你檢查 MAP[index][0] == null,你是在檢查 MAP[index] 指向的陣列的第一個元素是否為 null

相關文章