java学习之二维数组
java当中的二维数组,存储一组比较特殊的对象。他存储一个数组,同时存储的数组当中又存储着元素。
java二维数组的声明方式一:
class Arr2Demo { public static void main(String[] args) { /** *二维数组的定义格式:元素类型[][] 数组变量名称 = new 元素类型[3][];第一个维度必须 *确定,也就是第一个方括号 */ int[][] arr = new int[3][]; } }
二维数组出现的意义,二维数组之所以会出现是因为,现在当数据一多的时候我们往往希望把他们存储起来,比如说:
现在有甲乙两个成员,他们当中分别各有一组数字:
甲:34,56,78,22
乙:31,53,79,20
假如我们现在要把这两者存储起来,我们要做的就是把这两者存储在一个数组当中,那么即:
int[] arr = {34,56,78,22,31,53,79,20};
如果我们这个样子存储的话,势必不利于各个数据归属的区分,那么这个时候我们就引入二维数组。
数字多了,引入数组,数组多了就引入二维数组
int[][] arr2 = new int[2][4];
int[][] arr2 = new int[2][4]; arr2[0][0] = 34 ; arr2[0][1] = 56 ; arr2[0][2] = 78 ; arr2[0][3] = 22 ; arr2[1][0] = 31 ; arr2[1][1] = 53 ; arr2[1][2] = 79 ; arr2[1][3] = 20 ;
那么二维数组在内存当中是如何存储的呢?
二维数组定义的另外一种方式:
同一维数组一样,二维数组也有一种简便的定义方式:即
int[][] arr2 = {{34, 56, 78, 22}, {31, 35, 79, 20}} ;
这个就是二维数组简单的定义格式,一个大数组当中又包括两个小的数组。
二维数组的长度:
class Arr2Demo { public static void main(String[] args) { int[][] arr2 = {{34, 56, 78, 22}, {31, 35, 79, 20}} ; System.out.println(arr2.length);//2 System.out.println(arr2[0].length);//4 System.out.println(arr2[0].length);//4 } }
二维数组中数据的遍历输出:因为取出数据之后,还要取出数据当中的元素,这个就是大圈套小圈的思想,使用两个for循环:
class Arr2Demo { public static void main(String[] args) { int[][] arr2 = {{34, 56, 78, 22}, {31, 35, 79, 20}} ; for (int i = 0; i<arr2.length ; i++ ) { System.out.println("arr["+i+"] :"); for (int n = 0; n<arr2[i].length ; n++ ) { System.out.println("\t"+arr2[i][n]); } } } }
但是如果我们这个样子:
class Arr2Demo { public static void main(String[] args) { int[][] arr2 = new int[3][] ; for (int i = 0; i<arr2.length ; i++ ) { System.out.println("arr["+i+"] :"); for (int n = 0; n<arr2[i].length ; n++ ) { System.out.println("\t"+arr2[i][n]); } } } }
编译的时候不报错,但是运行的时候会报:
Exception in thread "main" java.lang.NullPointerException
at Arr2Demo.main(Arr2Demo.java:12)
因为此时arr[0]的值是null,是个空指针不指向任何元素,所以通过他引用其他的元素,就会报错。