考虑以下代码。
public class Skyler {
Skyler s1=new Skyler();
public static void main(String asd[]){
Skyler s2=new Skyler();
}
}
它会产生 java.lang.StackOverflowError
异常。为什么?
还请考虑以下代码。
public class Skyler {
Skyler s1=new Skyler();
static Skyler s2=new Skyler();
Skyler(){
System.out.println("const");
}
public static void main(String sdp[]){}
}
这也会生成相同的 java.lang.StackOverflowError
异常。为什么?
两个异常的原因是否相同?
最佳答案
你经历了一个循环,在这个循环中,构造函数多次调用它自己,直到它溢出。
例如:
这两种情况的原因都是一样的。没完没了的自称。
在这两种情况下,只有一次不同之处在于,您提供了带有打印语句的默认无组织构造函数,以便您可以看到该打印语句,直到出现错误。
关于java - Java 中的对象初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33036996/