黑马程序员技术交流社区

标题: 匿名对象 [打印本页]

作者: xiwangliujiao    时间: 2012-4-26 10:04
标题: 匿名对象
如果不是匿名对象,在栈中的地址指向堆内存,如果是匿名对象,在堆内存中是有地址的,可是在栈内存中是怎么处理的?有这个地址对应的吗?
作者: 刘永菲    时间: 2012-4-26 10:08
匿名对象用完一次之后,就无法再使用它了。对于没有任何引用指向它的对象,就会变成一个垃圾资源
在适当的时候,垃圾回收机制就会回收它

作者: liqian    时间: 2012-4-26 10:31
匿名对象有两种使用情况:
1.如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。如果对一个对象进行多个成员的调用,就必须给这个对象起个名字。
2.将匿名对象作为实参传递给一个方法调用。
这样用过之后在适当的时候,垃圾回收机制就会回收它。不需要有栈地址对应。
作者: 周海诚    时间: 2012-4-26 10:36
从内存关系之中可以看出来,实际上所有的内容都是在堆中保存的,也就是说堆才是真正所需要的内容。

所以所谓的匿名对象,就是使用的堆空间,对空间通过关键字new进行开辟。

但是这个时候也有一个问题需要注意了,既然匿名对象本身没有名字,则肯定没有对应的栈内存空间引用,则此对象只能使用一次。

以后只使用一次的对象就通过匿名对象表示,匿名对象使用完成之后将会等待JVM进行垃圾的收集。
作者: 林德燚    时间: 2012-4-26 12:37
匿名对象跟普通对象创建过程一样,只是在栈中没有一个变量去指向它,
栈中变量记住的是对象的地址,而匿名对象也是有地址的;
匿名对象和普通对象生命周期一样,只是普通对象可以通过变量多次引用;而匿名对象则等待虚拟机回收;
我们只是用一次的对象可以用匿名对象;





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