为什么这段代码会抛出java.lang.StackOverflowError

时间:2015-11-29 02:58:21

标签: java stack-overflow

为什么此代码不能正常执行。它抛出java.lang.StackOverflowError。我想知道班级的行为。

public class A {
A a = new A();
public static void main(String[] args) {
    A a = new A();
    System.out.println("i'm done!");
}}

2 个答案:

答案 0 :(得分:3)

您创建a的实例变量A并在每次调用构造函数时初始化它。所以它继续像一个无限循环

答案 1 :(得分:0)

您面临的问题是您在第二行使用默认/空白构造函数重新声明该类,从而导致无限循环,从而导致StackOverflowError。

删除以匹配:

public class A {
public static void main(String[] args) {
    A a = new A();
    System.out.println("i'm done!");
}}