通过上一节的学习,我们知道了Java中没有多维数组这个概念,只有一维数组,我们可以把多维数组理解为数组的数组,所以就会衍生出一种不规则数组。
举个例子,规则的4×3二维数组有12个元素,但是不规则的4×3二维数组就不一定有多少个元素。例如,静态初始化一个不规则数组:
int Array[][] = {{1,2},{3},{4,5,6},{7,8}};
我们把二维及二维以上的数组称为高维数组,那么上面这个高维数组有4个元素,但是低维数组元素个数不一样,其中第1个数组有2个元素,第2个数组有1个元素,第3个数组有3个元素,第4个数组有2个元素,这就是我们所说的不规则数组。
动态初始化一个不规则数组要麻烦一点,它不可以直接使用new int[4][3]语句,我们要先初始化高维数组,之后再分别初始化低维数组,例如:
int Array[][] = new int[4][]; //先初始化高维数组为4 Array[0] = new int[2]; //逐一初始化低维数组 Array[1] = new int[1]; Array[2] = new int[3]; Array[3] = new int[2];
那么上述代码初始化数组完成以后,我们可以知道并没有12个元素,而是只有8个元素,其中下标为[0][2]、[1][1]、[1][2]和[3][2]是不存在的,当我们试图访问它们的时候,就会抛出下标越界异常。
注意:下标越界异常(ArrayIndexOutOfBoundsException)是试图访问不存在的下标时引发的。比如,假设一个一维数组Array有12个元素,那么表达式Array[12]就会发生下标越界异常,这是因为数组下标是从0开始的,最后一个元素下标应该是数组长度减1,所以Array[12]访问的元素是不存在的。
本文固定URL:https://www.dotcpp.com/course/888
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程