Java编程语言中的二维数组就是数组的数组。在二维数组中,数据以行和列的形式存储,我们可以使用行索引和列索引来访问记录(就像Excel文件一样)。
如果数据是线性的,我们可以使用一维数组。但是,要处理多级数据,我们必须使用多维数组。Java中的二维数组是多维数组中最简单的形式。
Java中的二维数组声明
以下代码片段展示了此编程语言中的二维数组声明
Data_Type[][] Array_Name;
- 数据类型(Data_type):它决定了它将接受的元素类型。例如,如果要存储整数值,则数据类型将声明为int。如果要存储浮点值,则数据类型为float。
- 数组名称(Array_Name):这是在Java编程语言中给这个二维数组的名称。例如,Car、students、age、marks、department、employees等。
同样,也可以声明其他类型的二维数组。
int [][] anIntegerArray; // declaring an two dimensional array of Integers byte[][] anByteArray; // declaring an two dimensional array of Bytes short[][] anShortArray; // declaring an two dimensional array of Shorts long[][] anLongArray; // declaring an two dimensional array of Longs float[][] anFloatArray; // declaring an two dimensional array of Floats double[][] anDoubleArray; // declaring an two dimensional array of Doubles boolean[][] anBooleanArray; // declaring an two dimensional array of Booleans char[][] anCharArray; // declaring an two dimensional array of Chars String[][] anStringArray; // declaring an two dimensional array of Strings
在Java中创建二维数组
为了创建二维数组,我们必须使用New运算符,如下所示
Data_Type[][] Array_Name = new int[Row_Size][Column_Size];
如果我们观察上面的二维数组代码片段,
- 行大小(Row_Size):数组可以存储的行元素数量。例如,如果Row_Size = 5,则数组将有五行。
- 列大小(Column_Size):数组可以存储的列元素数量。例如,Column_Size = 6,则数组将有6列。
如果您已经初始化了一个Java二维数组,那么
double [][] anStudentArray; // Declaration of Two dimensional array in java // Crating an Java two dimensional Array anStudentArray = new int[5][3];
例如,
double [][] Employees = new double[5][3];
- 在这里,我们使用double作为数据类型在Java中声明了一个二维数组。这意味着,上述数组只接受double值,如果您尝试添加float值,它将抛出错误。
- Employees是二维数组的名称
- 数组的行大小为5,这意味着Employees数组只接受5个double值作为行。
- 如果我们尝试存储超过5个值,它将抛出错误。
- 我们可以存储少于5个值。例如,如果存储2个整数值,则其余2个值将被初始化为默认值(此处为0)。
- 数组的列大小为3。这意味着Employees数组只接受3个整数值作为列。
- 如果我们尝试存储超过3个值,它将抛出错误。
- 我们可以存储少于3个值。例如,如果存储1个整数值,则其余2个值将被初始化为默认值(此处为0)。
Java中的二维数组初始化
我们可以用多种方式初始化二维数组。请参阅本编程中的数组和多维数组。
二维数组第一种方法
声明和创建二维数组。
int[][] Student_Marks = new int[2][3];
以更传统的方式初始化数组元素。
Student_Marks[0][0] = 15; // Initializing Array elements at position [0][0] Student_Marks[1][1] = 45; // Initializing Array elements at position [1][1] Student_Marks[2][1] = 65; // Initializing Array elements at position [2][1]
Java二维数组第二种方法
声明和创建二维数组的第二种方法
int[][] Student_Marks = new int[2][];
在这里,我们没有指定列大小。但是,Jcompiler足够智能,可以通过检查列中的元素数量来计算大小。
二维数组第三种方法
int[][] Employees = { {10, 20, 30}, {15, 25, 35}, {22, 44, 66}, {33, 55, 77} };
在这里,我们没有指定行大小和列大小。但是,编译器足够智能,可以通过检查行和列中的元素数量来计算大小。
第四种方法
以上3种方法都适合在Java中存储少量元素到二维数组中。如果我们想存储100行或50列的值怎么办?使用上述任何一种方法添加所有这些都会很麻烦。为了解决这个问题,我们可以在这里使用嵌套For循环的概念。
int rows, columns;
int[][] Employees = new int[100][50];
for (rows = 0; rows < 100 ; rows++) {
for (columns = 0; columns < 50; columns++) {
Employees[rows][columns] = rows + columns;
}
}
提示:为了在二维数组中存储元素,我们可以使用For循环、While循环和Do While循环。
Java二维数组的第五种方法
int[][] anIntegerArray = new int[5][3];
anIntegerArray[0][0] = 10;
anIntegerArray[0][1] = 20;
anIntegerArray[0][2] = 30;
这里我们声明了一个大小为5行*3列的二维数组,但我们只为其中一行赋值。在这种情况下,剩余的值被赋为默认值(在本例中为0)。
访问Java二维数组元素
在此编程中,我们可以使用索引位置来访问二维数组元素。使用索引,我们可以访问或修改/更改二维数组中的每个单独元素。
二维数组的索引值从0开始,到n-1结束,其中n是行或列的大小。例如,如果int[][] Array_name = new int[6][4]将存储6个行元素和4个列元素。
要访问或修改第1个值,请使用Array_name[0][0];要访问或修改第2行第3列的值,请使用Array_name[1][2];要访问第6行第4列,请使用Array_name[5][3]。让我们通过一个二维数组的例子来更好地理解。
package ArrayDefinitions;
public class AccessTwoDimentionalArray {
public static void main(String[] args) {
int[][] StudentArray = { {12, 22, 33},{45, 65, 95},{442, 444, 446},{785, 786, 787}};
System.out.println("Element at StudentArray[0][0] = " + StudentArray[0][0]);
System.out.println("Element at StudentArray[0][1] = " + StudentArray[0][1]);
System.out.println("Element at StudentArray[0][2] = " + StudentArray[0][2]);
System.out.println("Element at StudentArray[1][0] = " + StudentArray[1][0]);
System.out.println("Element at StudentArray[1][1] = " + StudentArray[1][1]);
System.out.println("Element at StudentArray[1][2] = " + StudentArray[1][2]);
System.out.println("Element at StudentArray[2][0] = " + StudentArray[2][0]);
System.out.println("Element at StudentArray[2][1] = " + StudentArray[2][1]);
System.out.println("Element at StudentArray[2][2] = " + StudentArray[2][2]);
}
}
Java 2D数组输出
Element at StudentArray[0][0] = 12
Element at StudentArray[0][1] = 22
Element at StudentArray[0][2] = 33
Element at StudentArray[1][0] = 45
Element at StudentArray[1][1] = 65
Element at StudentArray[1][2] = 95
Element at StudentArray[2][0] = 442
Element at StudentArray[2][1] = 444
Element at StudentArray[2][2] = 446
为了处理大量的行和列,我们必须使用For循环。让我们使用For循环访问上面的StudentArray[4][3]数组。
int rows, columns;
for (rows = 0; rows < 4; rows++) {
for (columns = 0; columns < 3; columns++) {
System.out.format("%d", StudentArray[rows][columns]);
}
}
Java二维数组示例
在这个二维数组程序中,我们将声明2个二维数组。接下来,我们将它们初始化一些值。然后,我们将声明另一个二维数组来存储这两个数组的总和。
package ArrayDefinitions;
public class TwoDimentionalArray {
public static void main(String[] args) {
int[][] a = { {15, 25, 35}, {45, 55, 65} };
int[][] b = {{12, 22, 32}, {55, 25, 85} };
int[][] Sum = new int[2][3];
int rows, columns;
for(rows = 0; rows < a.length; rows++) {
for(columns = 0; columns < a[0].length; columns++) {
Sum[rows][columns] = a[rows][columns] + b[rows][columns];
}
}
System.out.println("Sum Of those Two Arrays are: ");
for(rows = 0; rows < a.length; rows++) {
for(columns = 0; columns < a[0].length; columns++) {
System.out.format("%d \t", Sum[rows][columns]);
}
System.out.println("");
}
}
}

在这个二维数组程序中,首先,我们声明了2个大小为[2],[3]的二维数组a和b,并用一些随机值初始化了它们。我们还声明了一个大小为[2],[3]的空数组。
int[][] a = { {15, 25, 35}, {45, 55, 65} };
int[][] b = {{12, 22, 32}, {55, 25, 85} };
int[][] Sum = new int[2][3];
下面的For循环将帮助遍历a和b数组中存在的每个单元格。for循环内的条件(rows < a.length)将确保Jcompiler不会超出数组行限制。此外,(rows < a[0].length)将确保编译器不会超出数组列限制。
提示:a.length用于查找行的长度(第一个维度),a[0].length用于查找列的长度(第二个维度)。
for(rows = 0; rows < a.length; rows++) {
for(columns = 0; columns < a[0].length; columns++) {
Sum[rows][columns] = a[rows][columns] + b[rows][columns];
}
}
让我们看看Java二维数组程序的迭代执行。
行第一次迭代
行值将为0,条件(rows < 2)为True。因此,它将进入第二个for循环。
列第一次迭代
列值将为0,条件(columns < 3)为True。因此,它将开始执行循环内的语句,直到条件失败。
- Sum[rows][columns] = a[rows][columns] + b[rows][columns];
- Sum[0][0] = a[0][0] + b[0][0];
- Sum[0][0] = 15 + 12;
- Sum[0][0] = 27;
列值增加1
列第二次迭代
列的值为1,条件(columns < 3)为True。由于我们没有退出内部循环(Columns循环),行值仍然是0。
- Sum[0][1]= a[0][1] + b[0][1];
- Sum[0][1]= 25 + 22 = 47;
列值增加1
列第三次迭代
列值为2,条件(columns < 3)为True。由于我们没有退出内部循环,行值将为0。
- Sum[0][2] = a[0][2] + b[0][2];
- Sum[0][2] = 35 + 32 = 67;
增加后,列值将为3,条件(columns < 3)将失败。因此,它将退出循环。
现在行值将增加一,并开始第二行迭代。
第二行第二次迭代
行值将为1,条件(rows < 2)为True。因此,它将进入第二个for循环。
列第一次迭代
列值将为0,条件(columns < 3)为True。因此,它将开始执行循环内的语句,直到条件失败。
- Sum[rows][columns] = a[rows][columns] + b[rows][columns];
- Sum[1][0] = a[1][0] + b[1][0];
- Sum[1][0] = 45 + 55;
- Sum[1][0] = 100;
列值增加1
列第二次迭代
列值为1,条件(columns < 3)为True。由于我们没有退出Columns循环,行值将为1。
- Sum[1][1]= a[1][1] + b[1][1];
- Sum[1][1]= 55 + 25;
- Sum[1][1]= 80;
列值增加1
列第三次迭代
列值为2,条件(columns < 3)为True。由于我们没有退出内部循环(Columns循环),行值将为1。
- Sum[1][2] = a[1][2] + b[1][2] = 65 + 85;
- Sum[1][2] = 150;
增加后,列值将为3,条件(columns < 3)将失败。因此,它将退出循环。现在行值将增加1。这意味着rows = 2。条件(rows < 2)将失败。因此,它将退出循环。
接下来的for循环将按上述方式遍历。但是,它们将不会进行求和,而是使用其中的system.out.format语句逐个显示值,并用逗号分隔。
for(rows = 0; rows < a.length; rows++) {
for(columns = 0; columns < a[0].length; columns++) {
System.out.format("%d \t", Sum[rows][columns]);
}
System.out.println("");
}
二维数组(Sum数组)的最终输出是
Sum[2][3] = { {27, 47, 67}, {100, 80, 150} };