Skip to content

二维数组常用操作示例

1. 创建二维数组

java
// 方式一:动态初始化
int[][] arr = new int[3][3];

// 方式二:静态初始化
int[][] arr = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

// 方式三:不规则数组(每行长度不同)
int[][] arr = new int[3][];
arr[0] = new int[]{1};
arr[1] = new int[]{2, 3};
arr[2] = new int[]{4, 5, 6};

2. 赋值与访问

java
int[][] arr = new int[3][3];

// 赋值
arr[0][0] = 10;
arr[1][1] = 20;
arr[2][2] = 30;

// 访问
System.out.println(arr[0][0]);
System.out.println(arr[1][1]);
System.out.println(arr[2][2]);
输出:
10
20
30

3. 获取行数和列数

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

System.out.println("行数:" + arr.length);
System.out.println("第0行的列数:" + arr[0].length);
System.out.println("第1行的列数:" + arr[1].length);
输出:
行数:3
第0行的列数:2
第1行的列数:3

4. 遍历二维数组

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

for (int i = 0; i < arr.length; i++) {
    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

5. 增强 for 循环遍历

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

for (int[] row : arr) {
    for (int num : row) {
        System.out.print(num + " ");
    }
    System.out.println();
}
输出:
1 2 3
4 5 6
7 8 9

6. Arrays.deepToString() — 直接打印二维数组

java
import java.util.Arrays;

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

System.out.println(Arrays.deepToString(arr));
输出:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

7. Arrays.fill() — 填充某一行

java
import java.util.Arrays;

int[][] arr = new int[3][3];

Arrays.fill(arr[0], 5); // 把第0行全部填充为5

System.out.println(Arrays.deepToString(arr));
输出:
[[5, 5, 5], [0, 0, 0], [0, 0, 0]]

8. Arrays.sort() — 对某一行排序

java
import java.util.Arrays;

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

Arrays.sort(arr[0]); // 只对第0行排序

System.out.println(Arrays.deepToString(arr));
输出:
[[1, 2, 3], [9, 7, 8], [6, 4, 5]]

9. System.arraycopy() — 复制某一行

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

int[] copy = new int[3];
System.arraycopy(arr[1], 0, copy, 0, arr[1].length);

System.out.println(Arrays.toString(copy));
输出:
[4, 5, 6]

10. 删除某一行(创建新数组)

java
import java.util.Arrays;

int[][] arr = {
    {1, 2, 3},
    {4, 5, 6},  // 删除这一行
    {7, 8, 9}
};

int deleteRow = 1;
int[][] newArr = new int[arr.length - 1][arr[0].length];
int index = 0;
for (int i = 0; i < arr.length; i++) {
    if (i != deleteRow) {
        newArr[index] = arr[i];
        index++;
    }
}

System.out.println(Arrays.deepToString(newArr));
输出:
[[1, 2, 3], [7, 8, 9]]

11. 插入新行(创建新数组)

java
import java.util.Arrays;

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

int[] newRow = {4, 5, 6};     // 要插入的新行
int insertPos = 1;             // 插入位置

int[][] newArr = new int[arr.length + 1][arr[0].length];
for (int i = 0; i < newArr.length; i++) {
    if (i < insertPos) {
        newArr[i] = arr[i];
    } else if (i == insertPos) {
        newArr[i] = newRow;
    } else {
        newArr[i] = arr[i - 1];
    }
}

System.out.println(Arrays.deepToString(newArr));
输出:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

12. 求二维数组所有元素的和

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

int sum = 0;
for (int[] row : arr) {
    for (int num : row) {
        sum += num;
    }
}

System.out.println("总和:" + sum);
输出:
总和:45

API 速查表

方法说明
arr.length获取行数
arr[i].length获取第 i 行的列数
Arrays.deepToString(arr)打印整个二维数组
Arrays.fill(arr[i], val)填充某一行
Arrays.sort(arr[i])对某一行排序
System.arraycopy(...)复制某一行