public class TestClass {
TestClass classIn = new TestClass();
public static void main(String[] args) {
TestClass classIn = new TestClass();
}
}
有人可以告诉我为什么这会导致堆栈溢出吗?
public class TestClass {
TestClass classIn = new TestClass();
public static void main(String[] args) {
TestClass classIn = new TestClass();
}
}
TestClass
的实例时,它会在以下行中再次尝试创建自身的实例。TestClass classIn = new TestClass();
这个过程会递归进行,直到堆栈溢出。删除此行代码即可解决问题。
classIn
实例变量在每次创建TestClass
实例时都会被初始化。因此,每次创建TestClass
实例时,你立即创建另一个实例,导致无限递归。TestClass classIn = new TestClass();
TestClass
的构造函数之前,实例变量(在你的情况下是classIn
)会被初始化,因此会创建另一个实例,从而触发创建另一个实例,以此类推...(直到堆栈溢出)。int factorial(int n)
{
if(n = 0)
return 1;
else
return n * factorial(n-1);
}