java 多维数组_Java 之 多维数组(二维数组)

一、多维数组

Java 语言里提供了支持多维数组的语法。

如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格,类似于一个 Excel表格。

以二维数组来讨论,可以看成一维数组array1 中又作为另一个一维数组 array2 的元素而存在的。

二、二维数组声明与初始化

1、格式1:动态初始化

语法格式:

int[][] arr = new int[3][2];

定义了一个名称为 arr 的二维数组,二维数组中有3个一维数组,每一个一维数组中有2个元素,一维数组的名称分别为 arr[0],arr[1], arr[2]

给第一个一维数组下标为1赋值为78的写法是:arr[0][1] = 78;

2、格式2:动态初始化

int[][] arr = new int[3][2];

二维数组中有3个一维数组,每个一维数组都是默认初始化值 null。(注意:区别与格式1)

可以对这个三个一维数组分别进行初始化。

arr[0]=new int[3];      arr[1] = new int[1];   arr[2] = new int[2];

注意: int[][] arr = new int[][3]; 是非法的,即第一个[]中必须有值。

3、格式3:静态初始化

语法格式:

int[][] arr = new int[][]{{3, 8, 2}, {2, 7}, {1, 2, 3, 4}};

定义一个名称为 arr 的二维数组,二维数组中有三个一维数组,每一个一维数组中具体元素也都初始化了。

第三个一维数组的长度表示方式: arr[2].length;

注意:特殊写法情况

int[] x,y[]:  x是一维数组,y 是二维数组

Java 中多维数组不必都是规则矩阵形式,比如上面的每个一维数组的长度各部相同。

4、根据类型推断省略格式

int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};

int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};

三、二维数组的长度和访问

1、长度

由于二维数组并不是规则的矩阵,其中的长度也不是同一的。

可以使用数组的整个外层的长度,然后再根据下标一次来获取每个内部一维数组的长度。

Demo:

int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};

System.out.println(arr4.length);//3

System.out.println(arr4[0].length);//3

System.out.println(arr4[1].length);//4

2、访问

访问二维数组中某一个元素时,需要使用两个索引来指定元素唯一的位置。

Demo:

int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};

String[][] arr2 = new String[3][2];

System.out.println(arr1[0][1]);//2

System.out.println(arr2[1][1]);//null

四、遍历二维数组

使用二维数组常见的就是遍历数组,介绍两种遍历数组的方法。

先来学习一下各种表示方法:

表示二维数组的行数: 二维数组名.length

表示一行:      二维数组名[行下标]  (行下标的范围:[0,二维数组总行数 - 1])

表示每一行的列数:     二维数组名[行下标].length

表示具体的一个数据: 二维数组名[行下标][列下标]  (列下标的范围:[0,该行总列数 - 1])

1、使用 for 循环遍历

2、使用 foreach 循环遍历

Demo:

int array[][] = new int[3][4]; //创建一个3行4列的数组,并且里面值都为默认值

// 使用 for 循环

for(int i=0;i

for (int j=0;j

System.out.print(array[i][j]);

}

System.out.println();

}

// 使用 foreach

for(int a[]: array) { // 第一个循环,第一个参数代表循环中的类型,即数组,第二个参数为循环对象

for(int j: a) { // 循环上一个循环中的第一个参数中的每一个即可

System.out.print(j);

}

System.out.println();

}

五、二维数组元素的默认值

二维数组分为外层数组的元素,内层数组的元素:

外层元素:arr[0],arr[1]等

内层元素:arr[0][0],arr[1][2]等

数组元素的默认初始化值:

针对于初始化方式一:比如:int[][] arr = new int[4][3];

外层元素的初始化值为:内层数组的地址值。

内层元素的初始化值为:与一维数组初始化情况相同

针对于初始化方式二:比如:int[][] arr = new int[4][];

外层元素的初始化值为: null

内层元素的初始化值为:不能调用,否则报错。(NullPointException)

六、二维数组的内存解析

1、二维数组初始化情况

9e1402eecf6c4a5c620081562439e3bb.png

2、案例一

578570f955d6f69d35c3ffd67b2a3d76.png

3、案例二

063d347f28772e5ea8250d47f7d80c3c.png

4、案例三

009dcc4d4f93edb71e854b69fc85e316.png

5、案例四

b7808a8d6d1e986e8d26d81393a42601.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值