二维数组是一种特殊的数组类型,其中的元素是以行和列的形式排列的。它可以看作一个由多个一维数组组成的数据结构。
换句话说,它是一个以行和列为索引的表格状数据结构。
二维数组的静态初始化允许你在声明数组的同时为其赋初值。
完整格式:
数据类型 [][] 数组名=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, …表示具体的元素值。
通过静态初始化,可以在声明数组时直接为每个元素赋值,无需显式地指定数组的大小。
以下是一个静态初始化二维数组的示例:
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
在这个示例中,我们声明了一个名为 matrix
的二维整型数组,并初始化了其元素。
鉴于示例中的初始化值,我们得到了一个3行3列的数组。
第一行是1、2、3,第二行是4、5、6,第三行是7、8、9。
在静态初始化中,可以根据需要添加任意数量的行和列,并为每个元素提供初始值。
静态初始化只适用于在声明时给数组赋初值。
动态初始化二维数组是指在声明数组时,只指定数组的行数或列数,而不指定具体的元素值。
格式:
数据类型 [][] 数组名=new 数据类型 [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表示列数。
通过动态初始化,可以根据实际需要在运行时确定数组的大小,并在后续的代码中为数组的元素赋予具体的值。
以下是一个动态初始化二维数组的示例:
int rowSize = 3;
int colSize = 4;
int[][] matrix = new int[rowSize][colSize];
在这个示例中,我们声明了一个名为 matrix
的二维整型数组,并使用 new
关键字进行动态初始化。
根据示例中的代码,我们创建了一个3行4列的数组,每个元素的初始值为对应数据类型的默认值(对于 `int` 类型来说是0)。
在动态初始化时,只为数组的行数和列数分配了内存空间,并未为数组元素分配内存。
因此,初始化后的数组中的每个元素都是默认值,需要在后续的代码中为其赋予具体的值。
例如,你可以使用循环结构来遍历数组,并为每个元素赋予特定的值。
访问二维数组的元素使用方括号按行和列的索引进行访问。
具体的格式如下:
array[rowIndex][colIndex]
其中,array
表示要访问的二维数组,rowIndex
表示行的索引,colIndex
表示列的索引。
在Java中,二维数组的索引从0开始。通过指定行索引和列索引,可以访问指定位置的元素。
例如:
arr[i][j];
以下是一个访问二维数组的示例:
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
(索引越界异常)异常。
二维数组的每一行可以具有不同的长度,所以你需要确保行索引和列索引都是有效的,避免出现异常。
二维数组的遍历可以使用嵌套的循环来完成。
具体的格式如下:
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]` 可以获取当前元素的值,你可以在循环体内执行任何你想要的操作,比如打印元素、计算总和等。
这里提供一个示例,演示如何遍历一个二维整型数组并计算所有元素的总和:
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