二维数组常用操作示例
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
303. 获取行数和列数
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行的列数:34. 遍历二维数组
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 95. 增强 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 96. 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);输出:
总和:45API 速查表
| 方法 | 说明 |
|---|---|
arr.length | 获取行数 |
arr[i].length | 获取第 i 行的列数 |
Arrays.deepToString(arr) | 打印整个二维数组 |
Arrays.fill(arr[i], val) | 填充某一行 |
Arrays.sort(arr[i]) | 对某一行排序 |
System.arraycopy(...) | 复制某一行 |
