五、java中的二维数组

二维数组

  • 五、二维数组
    • 1. 数组初始化
      • 1.1 静态初始化
        • 1.1.1 格式
        • 1.1.2 示例
      • 1.2 动态初始化
        • 1.2.1 格式
        • 1.2.2 示例
    • 2. 元素访问
      • 2.1 格式
      • 2.2 示例
    • 3. 数组遍历
      • 3.1 格式
      • 3.2 示例

五、二维数组

二维数组是一种特殊的数组类型,其中的元素是以行和列的形式排列的。它可以看作一个由多个一维数组组成的数据结构。

换句话说,它是一个以行和列为索引的表格状数据结构。

1. 数组初始化

1.1 静态初始化

二维数组的静态初始化允许你在声明数组的同时为其赋初值。

1.1.1 格式

完整格式:

数据类型 [][] 数组名=new 数据类型 [][] {
	{元素1,元素2}{元素1,元素2}
}

例如:

int [][] arr=new int [][] {
	{11,22},
	{33,44}
}

简化格式:

数据类型 [][] 数组名={
	{元素1,元素2}{元素1,元素2}
}

例如:

int [][] arr={
	{11,22},
	{33,44}
}

具体的格式如下:

data_type[][] array_name = {
    {val1, val2, val3, ...},
    {val4, val5, val6, ...},
    ...
};

其中,data_type指定了数组元素的数据类型,array_name是数组的名称,val1, val2, val3, …表示具体的元素值。

通过静态初始化,可以在声明数组时直接为每个元素赋值,无需显式地指定数组的大小。

1.1.2 示例

以下是一个静态初始化二维数组的示例:

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

在这个示例中,我们声明了一个名为 matrix 的二维整型数组,并初始化了其元素。

鉴于示例中的初始化值,我们得到了一个3行3列的数组。

第一行是1、2、3,第二行是4、5、6,第三行是7、8、9。

在静态初始化中,可以根据需要添加任意数量的行和列,并为每个元素提供初始值。

静态初始化只适用于在声明时给数组赋初值。

1.2 动态初始化

动态初始化二维数组是指在声明数组时,只指定数组的行数或列数,而不指定具体的元素值。

1.2.1 格式

格式

数据类型 [][] 数组名=new 数据类型 [m][n];
  • m表示这个二维数组可以存放多个一维数组
  • n表示每一个一维数组中,能存放多少个元素

例如:

int [][] arr=new 数据类型 [2][3]; //该数组可以存放两个一维数组,每个一维数组可以存放三个int类型的元素

具体的格式如下:

data_type[][] array_name = new data_type[row_size][col_size];

其中,data_type指定了数组元素的数据类型,array_name是数组的名称,row_size表示行数,col_size表示列数。

通过动态初始化,可以根据实际需要在运行时确定数组的大小,并在后续的代码中为数组的元素赋予具体的值。

1.2.2 示例

以下是一个动态初始化二维数组的示例:

int rowSize = 3;
int colSize = 4;
int[][] matrix = new int[rowSize][colSize];

在这个示例中,我们声明了一个名为 matrix 的二维整型数组,并使用 new 关键字进行动态初始化。

根据示例中的代码,我们创建了一个3行4列的数组,每个元素的初始值为对应数据类型的默认值(对于 `int` 类型来说是0)。

在动态初始化时,只为数组的行数和列数分配了内存空间,并未为数组元素分配内存。
因此,初始化后的数组中的每个元素都是默认值,需要在后续的代码中为其赋予具体的值。

例如,你可以使用循环结构来遍历数组,并为每个元素赋予特定的值。

2. 元素访问

访问二维数组的元素使用方括号按行和列的索引进行访问。

2.1 格式

具体的格式如下:

array[rowIndex][colIndex]

其中,array表示要访问的二维数组,rowIndex表示行的索引,colIndex表示列的索引。

在Java中,二维数组的索引从0开始。通过指定行索引和列索引,可以访问指定位置的元素。

例如:

arr[i][j]; 
  • i 表示二维元素的索引,获取出来的是里面的一维数组
  • j 表示的是一维数组的索引,获取出来的是元素

2.2 示例

以下是一个访问二维数组的示例:

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

int element = matrix[1][2];
System.out.println(element);

在这个示例中,我们声明了一个3行3列的整型二维数组 matrix。然后,我们使用 matrix[1][2] 访问第2行第3列的元素。这将返回值为6的整数。最后,我们打印出这个元素。

输出结果为:

6

需要注意的是,访问二维数组时,行索引和列索引必须在有效的范围内。否则会抛出 ArrayIndexOutOfBoundsException (索引越界异常)异常。

二维数组的每一行可以具有不同的长度,所以你需要确保行索引和列索引都是有效的,避免出现异常。

3. 数组遍历

二维数组的遍历可以使用嵌套的循环来完成。

3.1 格式

具体的格式如下:

for (int row = 0; row < array.length; row++) {
    for (int col = 0; col < array[row].length; col++) {
        // do something with array[row][col]
    }
}

其中,array是要遍历的二维数组。

首先,外层循环用于遍历二维数组的每一行,它的循环变量 `row` 表示当前行的索引。

然后,在每一行内,使用内层循环来遍历该行的每一个元素,内层循环的循环变量 `col` 表示当前列的索引。

通过访问 `array[row][col]` 可以获取当前元素的值,你可以在循环体内执行任何你想要的操作,比如打印元素、计算总和等。

3.2 示例

这里提供一个示例,演示如何遍历一个二维整型数组并计算所有元素的总和:

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

int sum = 0;
for (int row = 0; row < matrix.length; row++) {
    for (int col = 0; col < matrix[row].length; col++) {
        sum += matrix[row][col];
    }
}

System.out.println("总和: " + sum);

这个示例中,matrix 是一个3行3列的二维数组,使用嵌套循环遍历它,将每个元素的值加到变量 sum 中。最后,输出 sum 的值。

以上代码的输出结果为:

总和: 45

你可能感兴趣的:(Java,java,开发语言)