02. java学习补充 – 二维数组
文章目录
前言
Java中并没有真正的二维数组。
所谓二维数组其实是两个一维数组嵌套在一起实现的。
一、二维数组的声明
1. 动态声明
直接指定数组中的元素的个数
// 例子1:直接全部定义
int[][] arr1 = new int[2][3];
// 例子2:只定义外层
double[][] arr2 = new double[3][];
// 例子3:先定义外层,再分别定义内层
int[][] arr3 = new int[2][];
arr3[0] = new int[2];
arr3[1] = new int[5];
2. 静态声明
不直接指定数据元素个数,而是直接将具体的数据内容进行指定
// 例子:
String[][] arr = {{"aa","bb"},{"aa","cc","ff"}};
// 从这个例子可以看出,java二维数组内层元素的长度可以不同
二、数组的调用
1. 调用内层元素
数组名[外层元素下标][内层元素下标]
// 例子
int[][] arr = new int[3][4];
System.ot.println(arr[0][1]); // 0
2. 调用外层元素
数组名[外层元素下标]
// 例子
int[][] arr = new int[3][4];
System.out.println(arr[0]); // 得到的是内层的地址
三、数组的长度
1. 外层长度
数组名.length
// 例子
int[][] arr = new int[][]{{1,2,3},{2},{1,2}};
System.out.println(arr.length); // 3
2. 某一层长度
数组名[内层元素下标].length
// 例子
int[][] arr = {{1,2,3},{2},{1,2,3,4}};
System.out.println(arr[0].length); // 3
System.out.println(arr[1].length); // 1
System.out.println(arr[2].length); // 4
四、遍历二维数组
可以使用嵌套循环,来完成对二维数组的遍历
// 例子1:for循环
int[][] arr = new int[][]{{1,2,3},{2},{1,2,3,4}};
for(int i = 0;i < arr.length;i++){
for(int j = 0;j < arr[i].length;j++){
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
// 输出结果:
// 1 2 3
// 2
// 1 2 3 4
// 例子2:增强for循环
for(int[] a : arr){
for(int aa : a){
System.out.print(aa + "\t");
}
System.out.println();
}
// 输出结果:
// 1 2 3
// 2
// 1 2 3 4
五、二维数组初始化的默认值
1. 动态初始化方式1:int[][] arr = new int[3][4]
外层元素:默认存储地址值和元素类型
内层元素:默认与一维数组不同类型的默认值相同
// 例子:
int[][] arr = new int[3][4];
System.out.println(arr[0]);
System.out.println(arr[1][2]);
// 输出结果:
// I@1b6d3586
// 0
2. 动态初始化方式2:int[][] arr = new int[3][]
外层元素:默认为null
内层元素:报空指针异常
// 例子:
int[][] arr = new int[3][];
System.out.println(arr[0]);
System.out.println(arr[1][2]);
// 输出结果:
// null
// java.lang.NullPointerException