日期:2014-05-20  浏览次数:20535 次

垃圾回收为什么是2个对象?
class   Snoochy{
Boochy   booch;
public   Snoochy(){booch=new   Boochy(this);}
}

class   Boochy{
Snoochy   snooch;
        public   Boochy(Snoochy   s){snooch=s;}
       
        public   static   void   main(String   arg[]){
        Snoochy   snoog=new   Snoochy();
        //System.out.println(booch);
        //System.out.println(snooch);
        System.out.println(snoog);
        snoog=null;
        }
}

booch=new   Boochy(this);这个怎么理解?好象没看到过呢。

------解决方案--------------------

booch=new Boochy(this);
调用
public Boochy(Snoochy s){snooch=s;}


------解决方案--------------------
用了两次new
------解决方案--------------------
new 了两次啊
------解决方案--------------------
可以理解,但是用法很怪异!
------解决方案--------------------
不是很明白
------解决方案--------------------
这个用法很正常啊,没有什么可奇怪的吧


只是把自己作为参数传递给新的对象
你可以理解
new Snoochy();
等同于常见的代码:
Snoochy s = new Snoochy();
Boochy b = new Boochy(s);
s.booch = b;

这样使得Snoochy 和Boochy 有一个互相指向的引用
------解决方案--------------------
没见过怎么用的?
------解决方案--------------------
内存的分配是怎么样的呢
------解决方案--------------------
参数传递
------解决方案--------------------
标记一下,对这类东西总没耐心琢磨,有需要的时候看看
------解决方案--------------------
将自身对象作为参数,去构造另一个对象