黑马程序员技术交流社区

标题: 关于数组在内存中分配情况二次新解 [打印本页]

作者: 黄玉昆    时间: 2013-2-8 13:25
标题: 关于数组在内存中分配情况二次新解
本帖最后由 黄玉昆 于 2013-2-12 22:32 编辑

我在这里画了三张图:
我需要说明的是:
第一张:在定义一个数组的时候,如A[] a,在内存中像图中那样的分配的。仅仅是在栈内存中定义了一个引用型变量,可以说是一个指针。这个变量还没有指向任何有效的内存区。
第二张: 当new A[10]的时候,称为对a执行动态初始化,动态初始化是由系统为数组元素分配默认的初始值null的。
从图中可以看出,每个元素都是引用,且这个引用并未指向任何有效的内存,因此每个数组元素的值都是null,这就意味着依然不能直接使用A数组元素,这相当于定义了两个连续的类型为A的变量,但这个变量还未指向任何有效的内存区,

第三张:重新赋值后,会在堆内存中另外开辟新的地址空间,由数组中的每个元素的引用型变量指向新的地址空间,但是a[0]这些引用型变量的值还是null 呢,当赋值之后,A数组中的元素才会指向新的地址空间。

数组内存分配第一步.PNG (13.24 KB, 下载次数: 24)

数组内存分配第一步.PNG

数组内存分配第二步.PNG (16.46 KB, 下载次数: 25)

数组内存分配第二步.PNG

数组内存分配第三步.PNG (45.63 KB, 下载次数: 28)

数组内存分配第三步.PNG

作者: 黄玉昆    时间: 2013-2-8 13:30
这有两个关于数组的文件分享给大家
下载地址:http://dl.vmall.com/c0dzrztn1t




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2