4.3 二维数组
如果一维数组中的各个元素仍然是一个数组,那么它就是一个二维数组。二维数组常用于表示表,表中的信息以行和列的形式组织,第一个下标代表元素所在的行,第二个下标代表元素所在的列。
4.3.1创建二维数组
二维数组可以看作是特殊的一维数组,因此二维数组的创建同样有两种方式。
1.先声明,再用new关键字进行内存分配
声明二维数组的语法如下:
数组元素的类型 数组名字[][];
数组元素的类型[][] 数组名字;
声明二维数组,代码如下:
int a[][];
同一维数组一样,二维数组在声明时也没有分配内存空间,同样要使用new关键字来分配内存,然后才可以访问每个元素。对于高维数组,有两种为数组分配内存的方式。
第一种内存分配方式是直接为每一维分配内存空间,代码如下:
a = new int[2][4]
上述代码创建了二维数组a,二维数组a中包括两个长度为4的一维数组。
第二种内存分配方式是分别为每一维分配内存,代码如下:
a = new int[2][];
a[0] = new int[2];
a[1] = new int[3];
上述代码创建了二维数组a,但是只声明了a第一维的长度,也就是“行数”,第二维的长度也就
是“列数”,则是为每一行单独声明的,因此创建的数组a是“不定长数组”。
2.声明的同时为数组分配内存
第二种创建方式与第一种实现的功能相同,只不过声明与赋值合并到同一行代码中。例如,创建一个2行4列的二维数组,代码如下:
int a = new int[2][4]
4.3.2初始化二维数组
二维数组的初始化与一维数组初始化类似,同样可以使用大括号完成。语法如下:
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
4.3.3 使用二维数组
二维数组在实际应用中用得非常广泛。下面的实例就是使用二维数组输出一个3行4列且所有元素都是0的矩阵。
【例1】输出一个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
误区警示:
对于整型二维数组,创建成功之后系统会给数组中每个元素赋子初始值0。