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

这样会不会死循环了
public   class   A{
...
int   c;
public   A()
{
...
button.addMouseListener(new   B());
...
}
...
public   static   void   main(String[]   args){
B   b=new   B();
}

class   B   implements   MouseListener
{
  A   a=new   A();//如果在这里实例对象也应该是对的吧
  public   boid   mouseClicked(MouseEvent   e)    
{
      System.ou.println(a.c);//这里我随便执行个动作
}
...
我知道这样的程序可以用this指针解决,但有疑问捆饶我了
我想问:
在A类中有c成员数据和构造函数中有(new   B());对B的实例化
在B类中有A类的实例化   这样会不会有造成死循环;
问题所在,类实例过程中成员对象和函数怎么进行(顺序和做了什么),
一直认为实例化只是调用了类的构造函数执行..希望给个详细说明


------解决方案--------------------
我感觉会的,我这里没有编译器,你可以自己尝试下
------解决方案--------------------
去看看帮助文档就知道了...
------解决方案--------------------
看看这里:
http://www.elearning.gov.cn/elearning/user/findclass.do?method=courselist&categoryid=57982540b6cd11d993d0f770c0a83c70&id=2
------解决方案--------------------
绝对是死循环了
------解决方案--------------------
应该是会的,不停的互相调用构造方法
------解决方案--------------------
死循环,debug一下就知道顺序了
------解决方案--------------------
就是 debug一下 或者用输出语句看一下结果
------解决方案--------------------
这样的确会死循环,可能编译都不能通过
------解决方案--------------------
试试就知道了
------解决方案--------------------
不知道你为什么要这么写,如果是为了想实现互相传递参数,你可以借助第3个BEAN类实现。
或者你懒惰一点,作个STATIC变量或者类都可以,就不用实例化了,直接调用
------解决方案--------------------
实例化对象的过程,如:
B b=new B();
在堆区开辟一块空间,存储新new出来的B类对象(成员变量),在栈区开辟一个地址,命名为b,指向这个对象的地址,然后把存储在数据区(date_seg)的static成员变量赋初值(如果是第一次实例化此对象)。而方法成员是在程序调用此方法时在栈区开辟临时空间,你把它看作是局部变量就好了。
类定义不太明白会做什么,不过论坛里刚有兄弟发帖说:static静态块是在类第一次实例化的时候执行的而不是在类刚加载的时候执行的。可能类定义也就相当于普通的代码段。
------解决方案--------------------

while(true){
new object();
}

没区别

不应该写出这种程序