java二位数组内存分配问题

java的二维数组被看做数组的数组,那么像语句:int[][] a=new int[2][2];
是分配成连续的4个int空间,还是先创建2个int[]空间,然后再用a[0]指向2个int空间,a[1]指向2个int空间呢?详细解释

java中没有像其他语言一样,有多维数组的类型,是因为java的多维数组都是看作数组的数组,比如说二维数组看作是一维数组的数组,即在一维数组中放数组。其他的同理。
一般只要在定义时候规定了第一个数组的维数就可以了,比如int [][] a = new int [2][];后面的不指定维数,java虚拟机就能运行成功。
int [][] a= new int [2][];可以写成 int[] a[] = new int [2][];也就是在a[]数组中放int[]数组。
此时在内存中就会先分配两块内存空间,而不会去管每一块里面如何再去分配,那是每一块内存自己的事。所以不是连续分配成连续的4个int空间,而是先创建2个int[]空间。然后每一个int[]空间再分别分配。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-02-22
分为a[0]和a[1]两个数组,注意这儿的a[0]和a[1]不是数组元素,就是数组,然后将这两个数组分别赋予两个元素
相似回答