由于递归构造函数调用导致java堆栈溢出

标签 java

我是 Java 编程的新手。今天这个例子是我的老师用非静态方法教的。任何人都从jvm架构的角度告诉我详细的答案

class Example {
    int x = 10;
    int y = 20;
    Example e1 = new Example();

    public static void main(String[] args){
        System.out.println("main method start");
        Example e2 = new Example();
        System.out.println("main method end");  
    }
}

最佳答案

class Example {

    int x = 10;
    int y = 20;

    Example e1 = new Example(); // this is the reason

当您在 main() 方法中调用 new Example 时,会发生什么情况, Example e1=new Example(); 正在执行。

Example e1=new Example(); 中,您再次创建了 Example() 的新对象,它将再次调用 new Example()(递归调用新的 Example() 导致 StackOverflowError)。

关于由于递归构造函数调用导致java堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22879534/

相关文章:

java - 如何在 java 中复制/拆分输入流?

java - Spring、JPA 和 Hibernate - 不需要 json 文件扩展名的 RESTFul 端点

java - 在 Java 中转换为 2D 对象数组

java - PPP 的免费 C/C++ 和 Java 实现?

java - @RunWith(JUnitParamsRunner.class) 和 PowerMockRule

java - 我可以从文件描述符编号获取 Java 套接字吗?

java - jdk 1.4、1.5、1.6编译代码差异

使用线程池的Java矩阵乘法

java - 如何使按钮不可点击但可触摸?

java - 将一种方法调用到另一种方法时出现问题