以二維陣列 Integer[][] MAP = new Integer[100][2]為例
,
實際上定義了一個包含100個元素的陣列,每個元素本身也是一個陣列,這個兩個子陣列又會包含兩個Integer。
那麼在執行 MAP[index] == null 時,實際上是判斷 MAP
陣列中第 index
個位置的元素是否為 null
由於初始化了 MAP
為 new 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
。