多维数组可以看作数组的嵌套,就是数组里面包含另外的数组。
Java数组详解06 - 多维数组

语法格式:

//数据类型[][] 数组名称;
int[][] nums;
//数据类型[] 数组名称[];
int[] nums[];
//数据类型数组名称[][];
int nums[];
多维数组跟 数组的语法格式 基本一样,就是多了n对[]

二维数组

多维数组最简单的形式是二维数组。二维数组可以理解为一个一维数组的列表(两数组分别作为x,y坐标的列表)。

Java数组详解06 - 多维数组

多维数组的初始化跟一维数组的初始化是一样的,只声明了没初始化会报错。

如:

//声明二维数组,看作一张列表的话,相当于只初始化了x,没初始化y
int[][] nums3 = new int[3][] ; 
//不创建直接给y赋值,报错, `NullPointerException`,y没被初始化,报错
nums3[0][1] = 1; 

报的错误:

Exception in thread "main" java.lang.NullPointerException
    at com.zctou.array.ArrayDeomo05.main(ArrayDeomo05.java:22)

二维数组示例:

package com.zctou.array;

public class ArrayDeomo05 {
    //多维数组演示
    public static void main(String[] args) {
        //以二维数组为例
        // 1. 静态初始化
        int[][] nums = {{1,2,3},{4,5},{6,7,8},{9,0}};
        printArray(nums);
        System.out.println();
        System.out.println("========");

        // 2. 动态初始化
        int[][] nums2 = new int[3][4] ;
        nums2[1][2] = 2;
        printArray(nums2);
        System.out.println();
        System.out.println("========");

        // 3. 二维数组的初始化情况
        int[][] nums3 = new int[3][] ; //声明二维数组,看作一张列表的话,相当于只初始化了x,没初始化y
       // nums3[0][1] = 1; //报错, `NullPointerException`,y没被初始化,报错
       // printArray(nums3);
        //必须全部y都被
        nums3[0] = new int[3]; //相当于初始化了int[0] 的 y
        nums3[1] = new int[2]; //相当于初始化了int[1] 的 y
        //nums3[2] = new int[1]; //相当于初始化了int[2] 的 y

        nums3[0][1] = 1;
        printArray(nums3);
        System.out.println();
/*        nums3[1] = new int[4];
        nums3[1][0] = 6;
        printArray(nums3);*/
        int[][] nums4 = new int[4][];
        nums4[0] = new int[4];
        nums4[0][1] = 6;
        nums4[1] = new int[]{1,4};
        printArray(nums4);
        System.out.println();
        int[][] num5 = {{}};
        printArray(num5);
        System.out.println();
        //System.out.println(nums4[2].length);
    }



    //判断一维数组为空 true为空,false 为非空
    public static boolean nullArr(int[] arr) {
        boolean flag = false;
        // arr == null 只声明没定义的空数组,如: int[] num;
        // arr.length =0 初始化为空的数组,如: int[] num = {};
        if(arr==null||arr.length==0) {
            flag = true;
        }
        return  flag;
    }
    //打印二维数组
    public static void printArray(int[][] nums) {
        if(nums == null || nullArr(nums[0])) {
            System.out.print("空的二维数组");
            return;
        }
        for (int i = 0; i < nums.length; i++) {
            //以`{`开始输出二维数组
            if(i==0) {
                System.out.print("{");
            }
            //如果nums[i]为空,输出空“{}”
            if(nullArr(nums[i])) {
                System.out.print("空");
            } else {
                //遍历nums[i][]下的所有元素
                for (int j = 0; j < nums[i].length; j++) {
                    if (j == 0) {
                        System.out.print("{");
                    }
                    System.out.print(nums[i][j]);
                    if (j == nums[i].length - 1) {
                        System.out.print("}");
                    } else {
                        System.out.print(",");
                    }
                }
            }
            //以`}`结束二维数组,每个num[]用`,`结束
            if(i==nums.length-1) {
                System.out.print("}");
            } else {
                System.out.print(",");}
        }

    }

}

输出:

{{1,2,3},{4,5},{6,7,8},{9,0}}
========
{{0,0,0,0},{0,0,2,0},{0,0,0,0}}
========
{{0,1,0},{0,0},空}
{{0,6,0,0},{1,4},空,空}
空的二维数组
文章目录