Java数组(下)

多维数组

多维数组是指数组中包含其他数组作为其元素的数组,也就是数组的元素可以是数组本 身。常见的多维数组包括二维数组、三维数组等。在 JAVA 中,多维数组的声明和初始化方式与一维数组类似,只需在类型后面添加额外 的方括号来表示维度的数量

二维数组的定义

二维数组:如果一个一维数组中的各元素仍然是一维数组,那么这个数组被称为二维数组。 作为元素的每个数组长度可以不相等。例如:


// 声明一个整型二维数组e
int e[][] = {
    // 第一行,包含3个元素
    {1, 2, 3},
    // 第二行,包含1个元素
    {4},
    // 第三行,包含4个元素
    {5, 6, 7, 8}
};

 (1)先声明,后初始化 :

声明:

数组类型 数组名[][] 数组类型[][] 数组名

初始化:

数组名 = new 数组类型[数组长度][数组长度]( 一维长度必须指定,二维长度可以省略)

数组名 = new 数组类型[][]{数组元素表列} 数组名[下标] = new 数组类型[数组长度] 例如:

// 声明一个二维整型数组变量a
int[][] a;
// 初始化a为一个有1行2列的二维数组
a = new int[1][2];

// 声明一个二维整型数组变量b
int[][] b;
// 初始化b为一个有3行的二维数组,但每行的列数尚未确定
b = new int[3][];
// 为b数组的第0行分配一个有4个元素的数组
b[0] = new int[] { 1, 2, 3, 4 };

// 声明一个二维整型数组变量c,并立即初始化
// c是一个包含2行的二维数组,第0行有4个元素,第1行有2个元素
int[][] c = new int[][] { 
    { 3, 23, 2, 14 }, // 第0行,包含4个元素
    { 1, 2 }          // 第1行,包含2个元素
};

(2)声明同时初始化 :

数据类型[][] 数组名 = new 数组类型[数组长度][数组长度];

数据类型[][] 数组名 = new 数组类型[][]{数组元素表列};

数据类型[][] 数组名 = {数组元素表列}; 例如:

// 声明并初始化一个二维数组d,它有3行,但每行的列数尚未指定
int d[][] = new int[3][];

// 声明并初始化一个二维数组e,它有2行
// 第0行有3个元素,第1行有3个元素
int e[][] = new int[][]{{1,2,3},{4,5,5}};

// 声明并初始化一个二维数组f,它有3行
// 第0行有3个元素,第1行有1个元素,第2行有4个元素
int f[][] = {{1,2,3},{4},{5,6,7,8}};

 二维数组的遍历

使用嵌套的循环来遍历每个元素。示例如下:

public class lianx {
    public static void main(String[] args) {
        // 声明并初始化一个二维数组a,包含3行
// 第0行有3个元素,第1行有1个元素,第2行有4个元素
        int[][] a ={{1,2,3},{4},{5,6,7,8}};

// 外层循环遍历二维数组的每一行
        for(int i = 0; i < a.length; i++) {
        // 内层循环遍历当前行的每一个元素
        for (int j = 0; j < a[i].length; j++) {
            // 打印当前元素
            System.out.print(a[i][j]);
            // 打印一个空格作为元素之间的分隔符
            System.out.print(" ");
        }
        System.out.println();
    }
}
}

 for-each循环遍历二维数组。示例如下:

public class lianx {
    public static void main(String[] args) {
// 声明并初始化一个二维数组a,包含3行
// 第0行有3个元素,第1行有1个元素,第2行有4个元素
        int[][] a = {{1, 2, 3}, {4}, {5, 6, 7, 8}};
// 使用for-each循环遍历二维数组的每一行
        for (int[] row : a) {
            // 再次使用for-each循环遍历当前行的每一个元素
            for (int element : row) {
                // 打印当前元素,并在其后添加一个空格
                System.out.print(element + " ");
            }
            System.out.println();
        }
}
}

来做一道练习题:

有一个整数数组,其中存放着序列 1,3,5,7,9,11,13,15,17,19。请将该序列倒序存放并输出

public class lianx {
    public static void main(String[] args) {
        // 初始化一个整数数组,包含序列 1, 3, 5, 7, 9, 11, 13, 15, 17, 19
        int[] a = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};

        // 使用System.arraycopy来倒序存放数组
        int[] b = new int[a.length];
        for (int i = 0; i < a.length; i++) {
           b[i] = a[a.length - 1 - i];
        }

        // 输出倒序后的数组
        for (int value : b) {
            System.out.print(value + " ");
        }
}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值