Java二维数组本质是“数组的数组”,即每个元素为一维数组;声明用int[][] arr,支持静态初始化(如{{1,2},{3,4}})、动态初始化(如new int[3][]后逐行分配)和标准矩形初始化(如new int3);访问用arri,遍历时需以arr[i].length判断每行长度。

Java 中用二维数组存储矩阵数据很直接,本质就是“数组的数组”,每一行是一个一维数组,所有行组合成一个矩形结构。关键在于声明、初始化、访问和遍历方式要匹配矩阵的行列逻辑。
声明与初始化矩阵
二维数组声明语法为 类型[][] 数组名,常见初始化方式有三种:
- 静态初始化:直接指定所有元素,编译期确定大小,例如 int[][] matrix = {{1, 2, 3}, {4, 5, 6}}; —— 创建 2 行 3 列矩阵
- 动态初始化(指定行数):先分配行,再逐行分配列,例如 int[][] matrix = new int[3][];,之后可分别设每行长度(支持不规则,但矩阵通常要求等长)
- 标准矩形初始化:明确行列数,如 int[][] matrix = new int[3][4]; —— 创建 3 行 4 列全 0 矩阵
按行列索引访问元素
矩阵元素通过 matrix[row][col] 访问,注意索引从 0 开始,且必须保证 row 且 col 。例如获取第 2 行第 3 列(实际是索引 [1][2]):int value = matrix[1][2];
赋值同理:matrix[0][0] = 7; 将左上角设为 7。
立即学习“Java免费学习笔记(深入)”;
经典遍历方式
遍历矩阵推荐使用嵌套 for 循环,外层控制行,内层控制列:
<font size="2">for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println(); // 换行,保持矩阵形状输出
}</font>
若需增强 for(for-each),可这样写(更简洁,但无法直接获取行列索引):
<font size="2">for (int[] row : matrix) {
for (int element : row) {
System.out.print(element + " ");
}
System.out.println();
}</font>
常见注意事项
- 二维数组不是“真正”的二维结构,而是引用数组,matrix.length 是行数,matrix[0].length 是列数(假设每行长度一致)
- 访问前务必判空,避免 NullPointerException:先检查 matrix != null,再检查 matrix.length > 0
- 修改某行长度(如 matrix[0] = new int[5];)会导致该行与其他行长度不同,破坏矩阵结构,一般应避免


















