本帖最后由 newlaw2013 于 2012-4-13 16:44 编辑
Stirng s=new String("abc");
new:在堆内存中创建一个空间,这个空间算是一个对象。
将new生成的空间看成一个房间,“abc”就好比房间里面的东西(家具什么的),它们是String类型的。
"abc"也是一个对象。 图中的0X0089,是堆内存对象的地址值,好比房间的门牌号。
s 在栈内存中,s 的值就是0X0089。如果有谁想找这个"abc",按照“java的规定”,先到内存中找到s即可,s有"abc"的地址(s拿着"abc"所在房间的门牌号,
找这个地址去找,自然就找到了"abc"{:soso_e100:}
注意绿色部分,s也可以不持有"abc"的地址,如果s = 0x0078,它就指向了"hello"所在的地址,这个时候,"abc"有可能还在堆内存中,但再想通过s
是找不到"abc"了,因为s已经没有"abc"的“门牌号”,自然找不到了
|