多维数组可以看作数组的嵌套,就是数组里面包含另外的数组。
语法格式:
//数据类型[][] 数组名称;
int[][] nums;
//数据类型[] 数组名称[];
int[] nums[];
//数据类型数组名称[][];
int nums[];
多维数组跟 数组的语法格式 基本一样,就是多了n对[]
。
二维数组
多维数组最简单的形式是二维数组。二维数组可以理解为一个一维数组的列表(两数组分别作为x,y坐标的列表)。
多维数组的初始化跟一维数组的初始化是一样的,只声明了没初始化会报错。
如:
//声明二维数组,看作一张列表的话,相当于只初始化了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},空,空}
空的二维数组