Java 中的二维数组

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];

  1. 在这里,我们使用double作为数据类型在Java中声明了一个二维数组。这意味着,上述数组只接受double值,如果您尝试添加float值,它将抛出错误。
  2. Employees是二维数组的名称
  3. 数组的行大小为5,这意味着Employees数组只接受5个double值作为行。
    • 如果我们尝试存储超过5个值,它将抛出错误。
    • 我们可以存储少于5个值。例如,如果存储2个整数值,则其余2个值将被初始化为默认值(此处为0)。
  4. 数组的列大小为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("");
}
}
}
Two Dimensional Array in Java 2

在这个二维数组程序中,首先,我们声明了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} };