当前位置: 代码迷 >> J2SE >> C语言二维数组的内存结构与Java二维数组的内存结构同样吗
  详细解决方案

C语言二维数组的内存结构与Java二维数组的内存结构同样吗

热度:86   发布时间:2016-04-23 19:38:06.0
C语言二维数组的内存结构与Java二维数组的内存结构一样吗?
C语言二维数组的内存结构与Java二维数组的内存结构一样吗?还是我对内存的理解有误?

int a[3][2];

java:
C语言:


就像上面图例,我确信C语言的图解是对的,但是在Java中存在第一级别的划分吗?java新手求教!
------解决思路----------------------
即便是和C一样对称长度,如A[2][3]  也不过指的是第3个数组对象的第四个元素而已
存储空间也不像C那样连续有规律
------解决思路----------------------
存在的。

可以做实验:

public static void main(String[] args) {
int[][] arr = new int[3][3];
System.out.println(arr.hashCode());
System.out.println(arr[0].hashCode());
System.out.println(arr[1].hashCode());
System.out.println(arr[0][0]);
}


根据输出可知,arr[0]、arr[1]和arr[2]应是不同的对象,对应三个一维数组;
arr则是另外的对象,对应着你想知道是否存在的那个对象。

按照java的体系来说,此时arr是一个对象,那它一定已经被分配了空间,即实实在在存在的。

另,java可以构建锯齿形数组(即每一维不同长度的数组),也可以证明java中确实存在多维数组对象。
  相关解决方案