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 ;

那么二维数组在内存当中是如何存储的呢?

java学习之二维数组

二维数组定义的另外一种方式:

同一维数组一样,二维数组也有一种简便的定义方式:即

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,是个空指针不指向任何元素,所以通过他引用其他的元素,就会报错。

上一篇:关于查询oracle in >1000 的讨论


下一篇:iOS UICollectionView简单使用