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

标签 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();
    }
}

最佳答案

Foo f=new Foo();

您创建一个 Foo 的实例,使用一个本身是 Foo 实例的变量,并在构造函数中初始化它。

这会导致构造函数调用的无限递归,直到您的堆栈空间不足。

关于java - 在 main 方法之外创建对象时出现 stackoverflow 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9126122/

相关文章:

java - 如何在多模块 Gradle 项目中构建分发包?

java - HttpURLConnection 响应代码返回 500

c# - mscorlib.dll 中发生“System.StackOverflowException”?

java - Tomcat 7 getting SSLv2Hello is disabled error when trying to make client server ssl authentication

java - Android:强制使用ListView

java - 当我尝试进行 JPQL JOIN 查询时发生 StackOverflowError

operating-system - 堆栈溢出和缓冲区溢出有什么区别?

java - QUICKSORT : how to resolve java. lang.StackOverflowError?

Java 库路径问题

fortran - 当 Fortran 生成大型内部临时数组时,如何避免堆栈溢出?