首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 多維陣列維度解析:為什麼 a[0] 是二維、a[0][0] 是一維?

     編輯:程式設計疑難解答

初學 Java 多維陣列時,常對 a[0]、a[0][0] 的維度感到困惑。關鍵在於「陣列的陣列」觀念:Java 沒有真正的多維陣列,只有「一維陣列,其元素又是一維陣列」。

以三維陣列為例

int[][][] a = new int[2][3][4];
// 邏輯結構:長度 2 的一維陣列
//   每個元素指向一個長度 3 的二維陣列
//     每個元素再指向一個長度 4 的一維陣列(底層資料)

維度遞減規則

運算式型別維度說明
aint[][][]三維最外層陣列參考
a[0]int[][]二維取出第一個「二維陣列」參考
a[0][0]int[]一維再取出第一個「一維陣列」參考
a[0][0][0]int純量最終取出單一 int 值

記憶體圖解

a  ──► [ ref0 ] ──► [ ref00 ] ──► [ 0, 0, 0, 0 ]  (int[4])
       [ ref1 ]      [ ref01 ] ──► [ 0, 0, 0, 0 ]
                       [ ref02 ] ──► [ 0, 0, 0, 0 ]
  • a[0] 拿到的是 ref0 指向的整個二維陣列(含 3 個一維陣列)。
  • a[0][0] 拿到的是 ref00 指向的單一一維陣列(含 4 個 int)。

快速判斷口訣

「每加一個 [索引],維度就減一。」

  • 原陣列 N 維 → [0] 後變 N-1 維。
  • a[0]:3→2 維(二維)。
  • a[0][0]:3→1 維(一維)。

常見陷阱

  • 以為 a[0].length 是 4 → 錯,它是 3(二維陣列的第一維長度)。
  • 以為 a[0][0].length 是 3 → 錯,它是 4(底層一維陣列長度)。

理解「陣列的陣列」本質,維度遞減就不再是謎,寫多維陣列迴圈時也能精準控制 .length 邊界。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved