Java二維數組:定義、初始化與遍歷,比一維數組簡單

Java二維數組:定義、初始化與遍歷

1. 什麼是二維數組?

我們可以把二維數組理解爲“數組的數組”。如果說一維數組是“一排數據”,那二維數組就是由多個“一排數據”組成的“矩陣”(比如數學裏的表格、矩陣)。比如,一個班級5名學生,每名學生3門課的成績,就可以用二維數組來存儲。

2. 二維數組如何定義?

二維數組的本質是“數組的數組”,聲明語法如下:

數據類型[][] 數組名;  // 推薦寫法,更清晰
// 或者等價寫法:
數據類型[] 數組名[];  
數據類型 數組名[][];  

示例:聲明一個3行4列的二維數組(整數類型):

int[][] scores;  // 定義一個二維數組,類型int,名字scores

3. 二維數組如何初始化?

初始化就是給數組賦值,分靜態初始化動態初始化兩種方式。

(1)靜態初始化(直接賦值)

已知所有元素的值,直接用大括號嵌套賦值:

// 語法:數據類型[][] 數組名 = {{第一行元素}, {第二行元素}, ...};
int[][] scores = {
    {90, 85, 95},  // 第0行:第1名學生成績
    {88, 92, 89},  // 第1行:第2名學生成績
    {76, 80, 78}   // 第2行:第3名學生成績
};

注意:每行的元素個數可以不同(Java支持“不規則數組”),比如 {{1,2}, {3}} 也是合法的。

(2)動態初始化(先指定大小,再賦值)

先聲明數組並指定行數和列數,再單獨給元素賦值:

// 語法:數據類型[][] 數組名 = new 數據類型[行數][列數];
int[][] arr = new int[3][4];  // 定義3行4列的二維數組,所有元素默認值爲0

// 給元素賦值(按行/列索引賦值)
arr[0][0] = 10;  // 第0行第0列
arr[0][1] = 20;  // 第0行第1列
arr[1][2] = 30;  // 第1行第2列

4. 如何遍歷二維數組?

二維數組的遍歷需要嵌套循環(外層循環控制“行”,內層循環控制“列”)。

(1)普通for循環遍歷(嵌套循環)

外層循環控制“行”,內層循環控制“列”,通過索引 arr[i][j] 訪問每個元素:

int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

// 外層循環:控制行數(i從0到行數-1)
for (int i = 0; i < arr.length; i++) {  
    // 內層循環:控制列數(j從0到列數-1)
    for (int j = 0; j < arr[i].length; j++) {  
        System.out.print(arr[i][j] + " ");
    }
    System.out.println();  // 換行,分隔不同行
}

輸出

1 2 3 
4 5 6 
7 8 9 
(2)增強for循環(foreach)遍歷

外層循環遍歷“每一行”(數組的數組 → 數組),內層循環遍歷“每一列”(行 → 數組),代碼更簡潔:

int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

// 外層循環:遍歷每一行(row是一行數據,類型爲int[])
for (int[] row : arr) {  
    // 內層循環:遍歷每一行中的每個元素(num是當前行的一個數)
    for (int num : row) {  
        System.out.print(num + " ");
    }
    System.out.println();  // 換行
}

輸出結果與上面相同,但代碼更簡潔,適合不需要修改索引的場景。

5. 爲什麼說二維數組“比一維數組簡單”?

  • 本質簡單:二維數組可以理解爲“一維數組的集合”,操作邏輯是“先處理行,再處理列”,和數學中的矩陣概念一致,對初學者更直觀。
  • 難度可控:掌握一維數組後,二維數組只需在循環中多嵌套一層,結構類似“雙層循環”,理解成本較低。
  • 應用場景明確:比如存儲表格數據(如學生成績表、班級座位表),用二維數組天然合適,無需額外定義複雜結構。

總結

二維數組的核心是“數組的數組”,掌握定義、初始化和嵌套遍歷即可。只要理解了一維數組的循環邏輯,二維數組通過“外層循環行+內層循環列”就能輕鬆處理。對於初學者,二維數組是數組知識的自然延伸,通過矩陣類比和嵌套循環練習,很快就能掌握!

練習建議:嘗試用二維數組存儲一個3x3的矩陣,並用兩種循環方式遍歷,觀察不同循環的區別。

小夜