我们都知道实际上来说的话,java是没有多维数组的,只有一维数组,多维数组被解释为是数组的数组,所以的话,才会衍生出一种不规则数组,下面的话就来对不规则数组来做一个详细的介绍。
规则的4×3二维数组有12个元素,但是不规则数组就不一定了。
下面的代码静态初始化了一个不规则数组。
int intArray[][] = {{1,2}, {11}, {21,22,23}, {31,32,33}};
高维数组(二维以及二维以上的数组称为高维数组)是4个元素,低维数组元素个数不一样,如下所示,第1个数组有两个元素,第2个数组有1个元素,第3个数组有3个元素,第4个数组有3个元素。
这个就是不规则数组。
动态初始化不规则数组要麻烦一点,它不可以使用new int[4][3]语句,要先初始化高维数组,之后,再分别逐个初始化低维数组。
下面是具体的代码:
int intArray[][] = new int[4][]; //先初始化高维数组为4 // 逐一初始化低维数组 intArray[0] = new int[2]; intArray[1] = new int[1]; intArray[2] = new int[3]; intArray[3] = new int[3];
上面的代码初始化数组完成了以后,不是有12个元素而是9个元素,它们的下标索引如下所示,可见其中下标[0][2]、[1][1]和[1][2]是不存在的,假如,试图访问它们那么就会抛出下标越界异常。
注意一下,下标越界异常(ArrayIndexOutOfBoundsException)是试图访问不存在的下标时引发的。
例如,一个一维array数组假如有10个元素,那么表达式array[10]就会发生下标越界异常,这是因为数组下标是从0开始的,最后一个元素下标是数组长度减1,所以array[10]访问的元素是不存在的。
下面的话就来介绍一个不规则数组的示例:
import java.util.Arrays; public class HelloWorld { public static void main(String[] args) { int intArray[][] = new int[4][]; // 先初始化高维数组为4 // 逐一初始化低维数组 intArray[0] = new int[2]; intArray[1] = new int[1]; intArray[2] = new int[3]; intArray[3] = new int[3]; // for循环遍历 for (int i = 0; i < intArray.length; i++) { for (int j = 0; j < intArray[i].length; j++) { intArray[i][j] = i + j; } } // for-each循环遍历 for (int[] row: intArray) { for (int column: row) { System.out.print(column); // 在元素之间添加制表符, System.out.print('\t'); } // 一行元素打印完成后换行 System.out.println(); } System.out.println(intArray[0][2]); // 发生运行期错误 } }
不规则数组访问和遍历可以使用for和for-each循环,但是要注意一下,下标越界异常发生。
Java不规则数组就给你简单的介绍到这里了,更多java基础知识,可以继续来奇Q工具网进行了解哦。
推荐阅读: