原文: https://www.programiz.com/java-programming/multidimensional-array

在本教程中,我们将借助示例学习使用 2 维数组和 3 维数组的 Java 多维数组。

在学习多维数组之前,请确保您了解 Java 数组

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

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

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

Java 多维数组 - 图1

二维数组

请记住,Java 使用基于零的索引,即 Java 中数组的索引以 0 而不是 1 开头。

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

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

在此,data是 3d 数组,最多可容纳String类型的 24(3 * 4 * 2)个元素。


如何在 Java 中初始化 2D 数组?

这是我们如何在 Java 中初始化二维数组。

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

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

Java 多维数组 - 图2

二维数组的初始化

示例:二维数组

  1. class MultidimensionalArray {
  2. public static void main(String[] args) {
  3. // create a 2d array
  4. int[][] a = {
  5. {1, 2, 3},
  6. {4, 5, 6, 9},
  7. {7},
  8. };
  9. // calculate the length of each row
  10. System.out.println("Length of row 1: " + a[0].length);
  11. System.out.println("Length of row 2: " + a[1].length);
  12. System.out.println("Length of row 3: " + a[2].length);
  13. }
  14. }

输出

  1. Length of row 1: 3
  2. Length of row 2: 4
  3. Length of row 3: 1

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

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


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

  1. class MultidimensionalArray {
  2. public static void main(String[] args) {
  3. int[][] a = {
  4. {1, -2, 3},
  5. {-4, -5, 6, 9},
  6. {7},
  7. };
  8. for (int i = 0; i < a.length; ++i) {
  9. for(int j = 0; j < a[i].length; ++j) {
  10. System.out.println(a[i][j]);
  11. }
  12. }
  13. }
  14. }

输出

  1. 1
  2. -2
  3. 3
  4. -4
  5. -5
  6. 6
  7. 9
  8. 7

我们还可以将用于…每个循环,以访问多维数组的元素。 例如,

  1. class MultidimensionalArray {
  2. public static void main(String[] args) {
  3. // create a 2d array
  4. int[][] a = {
  5. {1, -2, 3},
  6. {-4, -5, 6, 9},
  7. {7},
  8. };
  9. // first for...each loop access the individual array
  10. // inside the 2d array
  11. for (int[] innerArray: a) {
  12. // second for...each loop access each element inside the row
  13. for(int data: innerArray) {
  14. System.out.println(data);
  15. }
  16. }
  17. }
  18. }

输出

  1. 1
  2. -2
  3. 3
  4. -4
  5. -5
  6. 6
  7. 9
  8. 7

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


如何在 Java 中初始化 3D 数组?

让我们看看如何在 Java 中使用 3d 数组。 我们可以初始化类似于 2d 数组的 3d 数组。 例如,

  1. // test is a 3d array
  2. int[][][] test = {
  3. {
  4. {1, -2, 3},
  5. {2, 3, 4}
  6. },
  7. {
  8. {-4, -5, 6, 9},
  9. {1},
  10. {2, 3}
  11. }
  12. };

基本上,3d 数组是 2d 数组的数组。 3d 数组的行的长度也可以像 2d 数组一样变化。


示例:3 维数组

  1. class ThreeArray {
  2. public static void main(String[] args) {
  3. // create a 3d array
  4. int[][][] test = {
  5. {
  6. {1, -2, 3},
  7. {2, 3, 4}
  8. },
  9. {
  10. {-4, -5, 6, 9},
  11. {1},
  12. {2, 3}
  13. }
  14. };
  15. // for..each loop to iterate through elements of 3d array
  16. for (int[][] array2D: test) {
  17. for (int[] array1D: array2D) {
  18. for(int item: array1D) {
  19. System.out.println(item);
  20. }
  21. }
  22. }
  23. }
  24. }

输出

  1. 1
  2. -2
  3. 3
  4. 2
  5. 3
  6. 4
  7. -4
  8. -5
  9. 6
  10. 9
  11. 1
  12. 2
  13. 3