延續上一題,用具體初始化語法釐清 a[0]、a[0][0] 的實際內容。
int[][] a = { {1, 2}, {3, 4} }; // 2 列 2 欄的二維陣列
a ──► [ 列0參考 ] ──► [ 1, 2 ] (int[])
[ 列1參考 ] ──► [ 3, 4 ] (int[])
| 運算式 | 值 / 參考 | 型別 | 說明 |
|---|---|---|---|
a | 二維陣列參考 | int[][] | 整個陣列 |
a[0] | {1, 2} 的參考 | int[] | 第一列(Row 0) |
a[0][0] | 1 | int | 第一列第一欄 |
a[1] | {3, 4} 的參考 | int[] | 第二列 |
a[1][1] | 4 | int | 第二列第二欄 |
a[0] 是站在「整個二維陣列」取出第 0 列 → 得到一維陣列。a[0][0] 先取第 0 列得到一維陣列,再取該一維陣列第 0 個元素 → 得到純量。public class Test {
public static void main(String[] args) {
int[][] a = { {1, 2}, {3, 4} };
System.out.println("a[0] = " + Arrays.toString(a[0])); // [1, 2]
System.out.println("a[0][0] = " + a[0][0]); // 1
System.out.println("a[0].length = " + a[0].length); // 2
}
}
輸出證明:a[0] 是長度 2 的 int[],a[0][0] 是純量 1。搞懂這層關係,二維陣列遍歷、傳參、複製就不會寫錯索引。