在main方法之外创建对象时出现stackoverflow错误

cod*_*der 3 java stack-overflow

运行此代码时,它显示Stackoverflow错误.我做错了什么,为什么代码编译?

public class Foo {
    int a = 5;
    Foo f = new Foo();

    void go() {
        System.out.println(f.a);
    }

    public static void main(String[] args) {
        Foo f2 = new Foo();
        f2.go();
    }
}
Run Code Online (Sandbox Code Playgroud)

ami*_*mit 7

Foo f=new Foo();
Run Code Online (Sandbox Code Playgroud)

您可以Foo使用变量本身创建一个实例Foo,并在构造函数中对其进行初始化.

这会导致构造函数invokations的无限递归,直到你的堆栈空间不足.