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

版权声明:本文为sunchuanzhen原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sunchuanzhen/p/3327970.html