Java 基础教程

多维数组

在讨论多维数组之前,我们先看看什么是数组的维数?数组的维数可以理解为一个数组中数据组合的层次数,只有一个层次的数据组合成的数组被称为一维数组。如下图:

上面是一个拥有5个元素的一维数组。

而多个一维数组再次组合生成的数组称为“二维数组”,即一维数组元素是一个一维数组。如下图:

上图中,a 数组的每一个元素均是一个一维数组,a[0] 下面存储的就是一个大小为 5 的一维数组。

而三维数组,即数组的每个元素存储的是一个二维数组。或者说,数组的每个元素是一个数组,而数组元素数组中还是一个数组。如下图:

上图中,a [i] 下面存储的一个数组,a[i][j] 下面依然存储的是一个数组。即 a[i] 下面存储的一个二维数组。根据上面的知识我们可以依次类推四维数组、五维数组……

注意:Java 中实际没有多维数组,只有一维数组。多维数组可以理解为“数组的数组”。

声明数组

一维数组

一维数组的声明在“什么是数组?”已经介绍,语法非常简单,如下:

<数据类型>[] <变量名>;
或者
<数据类型> <变量名>[];

例如:

// 声明一个拥有10个元素的一维数组
int[] a = new int[10];

二维数组

二维数组声明和一维数组一样,支持静态声明和动态声明。静态声明语法如下:

<数组类型>[][] <变量名> = {{}, {}, ...};

例如:

// 合法
int[][] a = {
        {1, 2, 3, 4, 5},
        {6, 7, 8, 9, 10}
};

上面代码中声明了一个拥有两行五列的二维数组。

动态语法如下:

<数组类型>[][] <变量名>= new <数组类型>[<大小>][<大小>];

例如:

int[][] a = new int[2][5]; // 合法
int[][] a = new int[2][]; // 合法,未定义 a 数组元素数组的长度
int[][] a = new int[][5]; // 非法
int[][] a = new int[][]; // 非法

三维数组

三维数组实际是将二维数组中存储的值改为存储数组。也分为静态声明和动态声明,静态声明如下:

int[][][] a = {
        {
                {1, 2, 3},
                {4, 5, 6}
        },
        {
                {7, 8, 9},
                {10, 11, 12}
        }
};

动态声明如下:

int[][][] a = new int[10][10][10]; // 合法
int[][][] a = new int[10][10][]; // 合法
int[][][] a = new int[10][][]; // 合法
int[][][] a = new int[][][10]; // 非法
int[][][] a = new int[][10][]; // 非法
int[][][] a = new int[][10][10]; // 非法

多维数组示例

下面将展示使用二维数组存储用户信息,用户信息如下表:

示例:使用 Object 二维数组保存用户信息,然后使用 for-each 语句向控制台输出用户信息。代码如下:

public class Demo {

    public static void main(String[] args) {
        // 声明一个能存放3个用户的数组
        Object[][] users = new Object[3][];

        // 初始化数组
        users[0] = new Object[]{1000, "张三", "男", 28};
        users[1] = new Object[]{2000, "李四", "男", 32};
        users[2] = new Object[]{3000, "王五", "女", 26};

        // 迭代输出用户信息
        for(Object[] user : users) {
            System.out.printf("ID=%d\tNAME=%s\tSEX=%s\tAGE=%d\n", user);
        }
    }

}

运行示例,输出结果如下:

ID=1000	NAME=张三	SEX=男	AGE=28
ID=2000	NAME=李四	SEX=男	AGE=32
ID=3000	NAME=王五	SEX=女	AGE=26
说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号