开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情 二维数组
1. 基本概念
什么是二维数组:
从定义形式上看: int [][];
可以这样理解,一个一维数组的每个元素都是一维数组, 这样就构成了二维数组。 举例:
int[][] arr = { {0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0,2, 0, 3, 0, 0}, {0, 0, 0, 0, 0, 0} };
关于二维数组的关键概念:
二维数组的元素个数 = 二维数组中一维数组的个数 = arr.length; 二维数组的每个元素是一维数组, 所以如果需要得到每个一维数组中的元素,还需要再次遍历; arr[i][j] =》 二维数组的第 i +1 个一维数组的第 j+1 个元素; eg: arr[0][0] = arr 中的第1个一维数组中的第1个元素。 例子:输出二维数组中的每一个元素
public class TwoDimensionalArray01 {
public static void main(String[] args) {
int[][] arr = { {0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0},
{0,2, 0, 3, 0, 0}, {0, 0, 0, 0, 0, 0} };
for(int i = 0; i < arr.length; i++) {
//遍历二维数组的每个元素(数组)
//1. arr[i] 表示 二维数组的第 i+1 个元素 比如 arr[0]:二维数组的第一个元素
//2. arr[i].length 得到 对应的 每个一维数组的长度
for(int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
//输出了一维数组
}
System.out.println();//换行
}
}
}
2. 数组初始化
静态初始化
基本语法:
类型[][] 数组名 = {{值 1,值 2…},{值 1,值 2…},{值 1,值 2…}}; 举例:int[][] arr = {{1,1,1}, {8,8,9}, {100}};
注意:二维数组的每个元素必须是一维数组,不允许是其他数据类型;每个一维数组中的元素个数可以相等/不相等。上例中,第一个一维数组有 3 个元素 , 第二个一维数组有 3 个元素, 第三个一维数组只有 1 个元素。
动态初始化
·第一种方式(列数确定)
基本语法:
类型[][] 数组名 = new 类型[大小][大小]; 举例: int arr[][] = new int[2][3];
这种初始化方式在声明二维数组的同时开辟了其所需要的堆内存空间;
·第二种方式(列数确定)
基本语法:
先声明:类型[][] 数组名; 再定义(开辟空间):数组名 = new 类型[大小][大小]; 然后给一维数组中的元素赋值,若不赋值,则为默认值。
·第三种方式(列数不确定)
基本语法:
先声明:类型[][] 数组名; 再定义(开辟空间):数组名 = new 类型[大小][]; 注意:此时一维数组未开辟堆内存空间; 遍历二维数组,给一维数组开辟堆内存空间,此时开辟的空间可以不相等;也就是列数不确定。 最后给一维数组中的元素赋值。