为什么StackOverflowError在运行时...?

时间:2017-07-11 09:55:32

标签: java

class Test
{
 Test t = new Test();   
 public static void main(String args[])
 {
    Test t = new Test();
    System.out.println(t);
  }
}

2 个答案:

答案 0 :(得分:11)

因为Test构造函数分配了一个新的Test对象,该对象分配了一个新的Test对象,该对象分配了一个新的Test对象......等等。

答案 1 :(得分:0)

当main()方法执行时,它将创建一个新的Test对象。一旦创建了新的Test对象,就意味着它将初始化所有实例变量。在再次初始化实例变量时,它尝试创建一个新的Test对象。在堆内存中,它将继续创建新的Test对象。因此,您将获得java.lang.StackOverflowError例外。要解决此异常,请将第一个Test对象设为static