多维数组实际上是"数组的数组",在Java中并没有真正的多维数组,而是通过数组嵌套实现的。
基本概念
-
二维数组:最常用的多维数组形式,可以看作是一个表格
-
更高维数组:三维数组可以想象成立方体,四维及以上就难以直观想象了
声明和初始化
1. 声明方式
// 二维数组声明
int[][] matrix1; // 推荐写法
int[] matrix2[]; // 合法但不推荐
int matrix3[][]; // C语言风格,不推荐
2. 初始化方式
// 方式1:直接初始化
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
// 方式2:先声明再逐个初始化
int[][] matrix = new int[3][3];
matrix[0][0] = 1;
matrix[0][1] = 2;
// ...
// 方式3:不规则数组(每行长度不同)
int[][] triangle = new int[3][];
triangle[0] = new int[1];
triangle[1] = new int[2];
triangle[2] = new int[3];
访问元素
int[][] matrix = {{1, 2, 3}, {4, 5, 6}};
// 访问单个元素
int element = matrix[0][1]; // 获取第1行第2列元素 (值为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();
}
特点
-
内存不连续:Java多维数组在内存中不是连续存储的
-
每行长度可变:可以创建不规则数组(每行长度不同)
-
数组是对象:每个维度的数组都是独立的对象
三维数组示例
// 声明并初始化3x3x3数组
int[][][] cube = new int[3][3][3];
// 填充数据
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
cube[i][j][k] = i + j + k;
}
}
}
注意事项
-
访问前必须初始化每一维度
-
多维数组会占用较多内存
-
深度嵌套会影响代码可读性
在实际开发中,二维数组常用于表示矩阵、表格数据等,更高维数组使用较少,可以考虑使用面向对象的方式替代。