跳到主要内容

Java 多维数组

提示
  1. 多维数组的概念:多维数组是数组的数组,其中每个元素本身也是一个数组。在 Java 中,多维数组可以是不同长度的,例如 int[][] a = new int[3][4] 创建一个二维数组,而 String[][][] data = new String[3][4][2] 创建一个三维数组。
  2. 初始化多维数组:在 Java 中,可以直接初始化多维数组,如 int[][] a = {{1, 2, 3}, {4, 5, 6, 9}, {7}};。这种初始化方式允许不同行有不同的长度。
  3. 访问和遍历多维数组:多维数组的元素可以通过索引访问,如 a[i][j]。遍历多维数组可以使用嵌套的 for 循环或 for...each 循环,用于逐个访问数组的每个元素。

在了解多维数组之前,请确保你已经了解了 Java 数组

多维数组是数组的数组。多维数组的每个元素本身也是一个数组。例如,

int[][] a = new int[3][4];

这里,我们创建了一个名为 a 的多维数组。这是一个二维数组,最多可以容纳 12 个元素,

Java 中的二维数组

记住,Java 使用基于零的索引,也就是说,Java 数组的索引是从 0 而不是 1 开始的。

让我们再看一个多维数组的例子。这次我们将创建一个三维数组。例如,

String[][][] data = new String[3][4][2];

这里,data 是一个 3d 数组,最多可以容纳 24 (342) 个 String 类型的元素。

如何在 Java 中初始化二维数组?

以下是我们如何在 Java 中初始化二维数组的方法。

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

如我们所见,多维数组的每个元素本身也是一个数组。并且,不像 C/C++,Java 中的多维数组的每一行可以是不同的长度。

Java 中具有不同长度的二维数组示例

示例:二维数组

class MultidimensionalArray {
public static void main(String[] args) {

// 创建一个二维数组
int[][] a = {
{1, 2, 3},
{4, 5, 6, 9},
{7},
};

// 计算每行的长度
System.out.println("第 1 行的长度: " + a[0].length);
System.out.println("第 2 行的长度: " + a[1].length);
System.out.println("第 3 行的长度: " + a[2].length);
}
}

输出

1 行的长度: 3
2 行的长度: 4
3 行的长度: 1

在上面的示例中,我们创建了一个名为 a 的多维数组。由于多维数组的每个组件也是一个数组(a[0]a[1]a[2] 也都是数组)。

这里,我们使用 length 属性来计算每行的长度。

示例:使用循环打印二维数组的所有元素

class MultidimensionalArray {
public static void main(String[] args) {

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

for (int i = 0; i < a.length; ++i) {
for(int j = 0; j < a[i].length; ++j) {
System.out.println(a[i][j]);
}
}
}
}

输出

1
-2
3
-4
-5
6
9
7

我们还可以使用 for...each 循环 来访问多维数组的元素。例如,

class MultidimensionalArray {
public static void main(String[] args) {

// 创建一个二维数组
int[][] a = {
{1, -2, 3},
{-4, -5, 6, 9},
{7},
};

// 第一个 for...each 循环访问二维数组内的单个数组
for (int[] innerArray: a) {
// 第二个 for...each 循环访问行内的每个元素
for(int data: innerArray) {
System.out.println(data);
}
}
}
}

输出

1
-2
3
-4
-5
6
9
7

在上述示例中,我们创建了一个名为 a 的二维数组。然后我们使用了 for 循环和 for...each 循环来访问数组的每个元素。

如何在 Java 中初始化三维数组?

让我们看看如何在 Java 中使用三维数组。我们可以像初始化二维数组一样初始化三维数组。例如,

// test 是一个三维数组
int[][][] test = {
{
{1, -2, 3},
{2, 3, 4}
},
{
{-4, -5, 6, 9},
{1},
{2, 3}
}
};

基本上,三维数组是二维数组的数组。就像二维数组一样,三维数组的行也可以长度不同。

示例:三维数组

class ThreeArray {
public static void main(String[] args) {

// 创建一个三维数组
int[][][] test = {
{
{1, -2, 3},
{2, 3, 4}
},
{
{-4, -5, 6, 9},
{1},
{2, 3}
}
};

// for..each 循环遍历三维数组的元素
for (int[][] array2D: test) {
for (int[] array1D: array2D) {
for(int item: array1D) {
System.out.println(item);
}
}
}
}
}

输出

1
-2
3
2
3
4
-4
-5
6
9
1
2
3