通过上一节的学习,我们知道了Java中没有多维数组这个概念,只有一维数组,我们可以把多维数组理解为数组的数组,所以就会衍生出一种不规则数组。
举个例子,规则的4×3二维数组有12个元素,但是不规则的4×3二维数组就不一定有多少个元素。例如,静态初始化一个不规则数组:
intArray[][]={{1,2},{3},{4,5,6},{7,8}};
我们把二维及二维以上的数组称为高维数组,那么上面这个高维数组有4个元素,但是低维数组元素个数不一样,其中第1个数组有2个元素,第2个数组有1个元素,第3个数组有3个元素,第4个数组有2个元素,这就是我们所说的不规则数组。
动态初始化一个不规则数组要麻烦一点,它不可以直接使用new int[4][3]语句,我们要先初始化高维数组,之后再分别初始化低维数组,例如:
intArray[][]=newint[4][];//先初始化高维数组为4Array[0]=newint[2];//逐一初始化低维数组Array[1]=newint[1];Array[2]=newint[3];Array[3]=newint[2];
那么上述代码初始化数组完成以后,我们可以知道并没有12个元素,而是只有8个元素,其中下标为[0][2]、[1][1]、[1][2]和[3][2]是不存在的,当我们试图访问它们的时候,就会抛出下标越界异常。
注意:下标越界异常(ArrayIndexOutOfBoundsException)是试图访问不存在的下标时引发的。比如,假设一个一维数组Array有12个元素,那么表达式Array[12]就会发生下标越界异常,这是因为数组下标是从0开始的,最后一个元素下标应该是数组长度减1,所以Array[12]访问的元素是不存在的。