Java多维数组详解

  

Java多维数组详解

 

什么是多维数组

Java 数组可以是一维或多维。一维数组就是最普通数组,是一列数据的线性序列,而多维数组相对而言就更加复杂。

多维数组就是数组中包含数组,类似于矩阵。

  • 一个一维数组表示一行
  • 多个一维数组表示多行

 

声明和初始化多维数组

多维数组的声明和初始化与一维数组非常类似,二维数组的初始化需要给出行数和列数,例如:

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

这个代码声明了一个有3行4列的整数型二维数组a。

也可以这样写:

int [][]arr = new int[2][];  //第二维可以list
arr[0] = new int[]{1,2,3};
arr[1] = new int[]{4,5};

这个代码首先定义了一个二维数组arr,arr有两行。接着在第一行的数组{1,2,3}和第二行的数组{4,5}中中添加数据。

 

数组元素访问

访问多维数组的语法与一维数组类似,例如:

a[0][0] = 1;
a[0][1] = 2;

 

多维数组的遍历

二维数组的遍历

二维数组可以通过嵌套循环遍历,例如:

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

其中,i 表示一维数组的下标,j 表示二维数组的下标。

三维数组的遍历

三维数组的遍历需要使用三层循环:

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

 

注意事项

  • 多维数组的行数和列数可以不相同,每一行可以存放不同个数的元素。
  • 声明多维数组时需要注意方括号的个数,多维数组相当于一个数组的数组。

 

示例

示例1

public static void main(String[] args) {
    int[][] matrix = new int[3][3];
    // 录入数据
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix[i].length; j++) {
            matrix[i][j] = i * 3 + j + 1;
        }
    }
    // 打印数据
    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();
    }
}

输出结果:

1 2 3 
4 5 6 
7 8 9 

这个例子展示了一个3行3列的二维数组,它包含1到9的整数。通过两层循环遍历数组,打印输出数组元素。

示例2

public static void main(String[] args) {
    int[][][] matrix = new int[2][2][3];
    // 录入数据
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix[i].length; j++) {
            for(int k=0; k<matrix[i][j].length; k++){
                matrix[i][j][k] = i+j+k;
            }
        }
    }
    // 打印数据
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix[i].length; j++) {
            for(int k=0; k<matrix[i][j].length; k++){
                System.out.print(matrix[i][j][k] + " ");
            }
            System.out.println();
        }
        System.out.println();
    }
}

输出结果:

0 1 2 
1 2 3 

1 2 3 
2 3 4 

这个例子展示了一个2 * 2 * 3的三维数组,其中每个元素的值等于它在三维数组中的下标之和。通过三层循环遍历数组,打印输出数组元素。

 

总结

  • 多维数组的声明和初始化与一维数组类似,但方括号的个数代表维数。
  • 多维数组的访问需要使用多个下标。
  • 多维数组的遍历需要使用多层循环,以二维数组为例需要使用两层循环,以三维数组为例需要使用三层循环。

 

相关文章