两张内存变化图揭秘二维数组的初始化
一 代码示例
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语言没多维数组。