通过上一节的学习,我们知道了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]访问的元素是不存在的。


点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)