Java不规则数组详解

TK 2020-09-18 11:22:35 java常见问答 8802

我们都知道实际上来说的话,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工具网进行了解哦。

推荐阅读:

java二维数组,获取整列元素详解

Java一维数组,获取单个元素实例分享

java数组,数组是什么?特点有哪些?