Java二维数组的创建和使用(新手必看)
在 Java 中,如果一维数组中的各个元素仍然是一个数组,那么它就是一个二维数组。
二维数组常用于表示表,表中的信息以行和列的形式被组织,第一个下标代表元素所在的行,第二个下标代表元素所在的列。
对于高维数组,有两种为数组分配内存的方式。第一种内存分配方式是直接为每一维分配内存空间,代码如下:

图 1 二维数组内存分配(第一种方式)
第二种内存分配方式是分别为每一维分配内存,代码如下:

图 2 二维数组内存分配(第二种方式)
例如,创建一个 2 行 4 列的二维数组,代码如下:
初始化二维数组,代码如下:
int 型二维数组是以 int a [][] 来定义的,所以可以直接给 a[x][y] 赋值。例如,给 a[1] 的第 2 个元素赋值的语句如下:
【实例】输出一个 3 行 4 列且所有元素都为 0 的矩阵。
在项目中创建 Matrix 类,在主方法中编写代码实现输出一个 3 行 4 列且所有元素都为 0 的矩阵。实例代码如下:
二维数组常用于表示表,表中的信息以行和列的形式被组织,第一个下标代表元素所在的行,第二个下标代表元素所在的列。
二维数组的创建
二维数组可以被看作是特殊的一维数组,二维数组的创建有以下两种方式。1) 先声明,再用new关键字进行内存分配
声明二维数组的语法如下:数组元素的类型 数组名字[ ][ ]; 数组元素的类型[ ][ ] 数组名字;声明二维数组,代码如下:
int a[][];同一维数组一样,二维数组在声明时也没有分配内存空间,同样要使用 new 关键字来分配内存,然后才可以访问每个元素。
对于高维数组,有两种为数组分配内存的方式。第一种内存分配方式是直接为每一维分配内存空间,代码如下:
a = new int[2][4];上述代码创建了二维数组 a,二维数组 a 中包括两个长度为 4 的一维数组,内存分配如下图所示。

图 1 二维数组内存分配(第一种方式)
第二种内存分配方式是分别为每一维分配内存,代码如下:
a = new int[2][]; a[0] = new int[2]; a[1] = new int[3];上述代码创建了二维数组 a,但是只声明了 a 第一维的长度,也就是“行数”,第二维的长度也就是“列数”,则是为每一行单独声明的,因此创建的数组 a 是“不定长数组”,其内存分配如下图所示。

图 2 二维数组内存分配(第二种方式)
2) 声明的同时为数组分配内存
第二种创建方式与第一种实现的功能相同,只不过声明与赋值被合并到同一行代码中。例如,创建一个 2 行 4 列的二维数组,代码如下:
int a = new int[2][4];
二维数组的初始化
二维数组的初始化与一维数组初始化类似,同样可以使用大括号完成。语法如下:type arrayname[][] = {value1,value2,…,valuen};
- type:数组数据类型;
- arrayname:数组名称,一个合法的标识符;
- value:二维数组中各元素,都代表一个一维数组;
初始化二维数组,代码如下:
int myarr[][] = {{12,0},{45,10}};初始化二维数组后,要明确数组的下标都是从 0 开始的。例如,上面的代码中 myarr[1][1] 的值为 10。
int 型二维数组是以 int a [][] 来定义的,所以可以直接给 a[x][y] 赋值。例如,给 a[1] 的第 2 个元素赋值的语句如下:
a[1][1] = 20;
二维数组的使用
二维数组在实际应用中被用得非常广泛。下面的实例就是使用二维数组输出一个 3 行 4 列且所有元素都是 0 的矩阵。【实例】输出一个 3 行 4 列且所有元素都为 0 的矩阵。
在项目中创建 Matrix 类,在主方法中编写代码实现输出一个 3 行 4 列且所有元素都为 0 的矩阵。实例代码如下:
public class Matrix { // 创建类 public static void main(String[] args) { // 主方法 int a[][] = new int[3][4]; // 定义二维数组 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(); // 输出空格 } } }运行结果如下:
0000
0000
0000