本帖最后由 黄玉昆 于 2013-2-7 00:37 编辑
我在学习有关clone(克隆)的相关知识的时候,突然觉得堆内存还可以这样理解: 这里就涉及到了一个名词:“对象中的内部对象”或者说“深层对象” 我突然觉得,在堆内存中创建了一个对象,那么,这个对象中包含着诸如姓名(String类型),日期(Date类型)等等此类的数据,那么拿“姓名”这个数据来说,是对String中“对象”的引用(有关String的一些理解会在后面的文章中浅谈的),那么,这么说来,创建的对象中存在name,而name又是引用的String中的对象,这样说来,可以理解成“对象中的对象”或者说堆内存中存在“深层对象”。 用下面的图例表示说明:
图中表明:在堆内存中创建的对象,又会分别将自身的各对应的类型归类(字符串类型归为String类型中)。就好像说这是一种“深层引用”一般,从String这样的类型“数组”中引用出来,并用新的类型(如图中的Employee类型)包装(或集合)起来一样。而像salary这种数值数据,是属于基本double这样的类型数据的,是和String有着不一样的类型,因此不会“深层引用”对应的类型了(当然也没有这种类型)。 我不太确定,这种理解是不是正确的,只是突发奇想的理解,其实,更多的是对内存分配的一点点兴趣而已,清楚了内存是如何分配的,有利于更好地理解程序是如何运行的,这对于学习java也是一种激励和乐趣吧。
有对内存很清楚的朋友,希望可以帮我看看,这么理解是不是正确的呢?谢谢
|