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

java的类定义的方法中对自身的实例化为什么不会引起无限递归?
比如:
Java code

class Test
{
   public void fun()
   {
      Test s=new Test();//这句为什么不会引起无限递归?
      System.out.println("test!");
   }
}


就是创建一个Test对象时,会创建fun()然后再创建Test对象……无限循环下去,如果方法是static比较容易理解,因为static方法是类创建类时创建,所以创建对象时不会引起递归,但非static方法为什么也不会引起递归?



------解决方案--------------------
执行fun才会创建。。。创建完又不会立马又执行fun 你要手动执行fun
------解决方案--------------------
类中有方法,你创建了就会自动调用那个方法么,那不乱套了。我们去调用方法时才会执行方法的,只是初始化时确定类有这个方法,不会去执行的
------解决方案--------------------
那句不是只会分配空间,做些初始化,然后new会返回一个地址给t而已吗?为什么会无限递归?
------解决方案--------------------
Java code
class Test{
   public Test() {
        Test t = new Test();
        System.out.println(t);
   }
}
//试一下这个;