多维数组
1.什么是多维数组
-
多维数组可以看成是数组的数组,比如二位数组就是一个特殊的一维数组,在其中每一个元素都是一个一维数组。
-
看看多维数组的一个例子(定义一个二维数组)
int[][] aaa = new int[2][5];
- 上面定义的数组可以看作是一个二行五列的数组。
2.如何定义多维数组
- 咱们一维数组有种定义方式如下,那么二位数组就是这么定义。
int[] aa = {1,2,3,8,5}; //一维数组
int[][] aaa = {{1,2},{3,8},5}; //二维数组定义方式
- 同样在刚才还提到这样定义数组
int[][] aaa = new int[2][5];
3. 如何使用二维数组
- 首先咱们简单看一下二维数组
int[][] aaa = {{1,2},{3,8},{5,9},{2,4}};
可以把这个数组看成是一个四行两列的数组,那么他的排列方式就是这个样子。
/* 1 2
3 8
5 9
2 3
*/
假如我们要输出这个元素,该怎么输出呢,也就是最普通的输出方式,如下图。
Sysetem.out.println(aaa[0][0]); //输出结果是:1
Sysetem.out.println(aaa[0][1]); //输出结果是:2
Sysetem.out.println(aaa[1][0]); //输出结果是:3
Sysetem.out.println(aaa[1][1]); //输出结果是:8
Sysetem.out.println(aaa[3][1]); //输出结果是:4
- 咱们输出一个这个二维数组,咱们可以用两个for循环来实现,第一个for循环,他是实现的控制行数。第二个for循环,他是实现的控制列数。咱们写一下看一眼
public class asddas77 {
public static void main(String[] args) {
int[][] erwei = {{2,6},{4,6},{2,87},{334,45}};
for (int i = 0; i < erwei.length; i++) { //这是控制数组的行数,第几行
for (int j = 0; j < 2; j++) { //这是控制数组的列数,第几列
System.out.println(erwei[i][j]); //这是输出由前面控制的第几行第几列。
}
}
}
}
- 按照这样输出,他会输出数组中的每个元素,那么按照下面的输出,他会输出什么东西呢?
public class asddas77 {
public static void main(String[] args) {
int[][] erwei = {{2,6},{4,6},{2,87},{334,45}};
for (int i = 0; i < erwei.length; i++) { // 只有这一个for循环,来控制他的行数,没有for循环控制列数。
System.out.println(erwei[i]);
}
}
}
[I@1b6d3586
[I@4554617c
[I@74a14482
[I@1540e19d
上面就是他输出的结果,每一个代表一个对象。
- 还有一种输出方式,如下图
public class asddas77 {
public static void main(String[] args) {
int[][] erwei = {{2,6},{4,6},{2,87},{334,45}};
aaa(erwei[0]); //咱们实参是数组erwei[0],并不是erwei。
}
public static void aaa(int[] bb){
for (int i = 0; i < bb.length; i++) {
System.out.println(bb[i]);
}
}
}
他的输出结果是
2
6
这个方法的输出方式是调用了自己定义的函数,实现元素的输出。咱们仔细观察,之前的一维函数,在调用函数时,他的实参是erwei.
而这个二维数组的输出,他实参则是erwei[0],因此,不难发现erwei[0]也就是一个数组,这个数组的元素是erwei【0 】【0】和erwei【0】【1】,也就是2和6。
- 咱们可以探究一下数组的长度
public class asddas77 {
public static void main(String[] args) {
int[][] erwei = {{2,6},{4,6},{2,87},{334,45}};
System.out.println(erwei.length);
System.out.println(erwei[0].length);
}
}
他的输出结果是
4
2