两张内存变化图揭秘二维数组的初始化

一 代码示例

public class TwoDimensionTest
{
	public static void main(String[] args)
	{
		// 定义一个二维数组
		int[][] a;
		// 把a当成一维数组进行初始化,初始化a是一个长度为4的数组
		// a数组的数组元素又是引用类型
		a = new int[4][];  //a
		// 把a数组当成一维数组,遍历a数组的每个数组元素
		for (int i = 0 , len = a.length; i < len ; i++ )
		{
			System.out.println(a[i]);
		}
		// 初始化a数组的第一个元素
		a[0] = new int[2];
		// 访问a数组的第一个元素所指数组的第二个元素
		a[0][1] = 6;            //b
		// a数组的第一个元素是一个一维数组,遍历这个一维数组
		for (int i = 0 , len = a[0].length ; i < len ; i ++ )
		{
			System.out.println(a[0][i]);
		}
	}
}

二 运行结果

null
null
null
null
0
6
三 结果分析



 

 
图一是a段代码执行完后的内存情况。
图二是b段代码执行完后的内存情况。
另外从图一和图二,我们可以得出这样一个结论:二维数组是一维数组,其数组元素是一维数组。三维数组也是一维数组,其数组元素是二维数组,从这个角度来看,Java语言没多维数组。

posted on 2016-09-24 22:14  爱你一万年123  阅读(147)  评论(0编辑  收藏  举报

导航