为什么这个程序会出现StackFlowException 呢

 public class CodeBlockDemo {

    static CodeBlockDemo cbd;
    CodeBlockDemo scb = new CodeBlockDemo();
    static {
        cbd = new CodeBlockDemo();
        int a = 1;
        System.out.println("hot");
        System.out.println(a);
    }

    CodeBlockDemo(){
        System.out.println("构造器");
    }
    public static void main(String[] args) {
        int[] a = new int[] {1,2,3,4};
        Object b =a;
        Object m = new int[] {2,3,4};
        Object[] element = new Integer[] {2,3,4};
        Object[] arr = {};

    }

}

new死循环了,自己内部new自己,出不来了

是指待定调用太多导致执行堆栈溢 ,自己new自己导致循环调用 ,建议学习下单例写法

在类中实例化自己了,一直循环导致堆栈溢出。
如 public class A{ A a = new A();}
A a 是声明,创建了一个A类型的变量a。
new A()
即是实例化,实实在在地在内存里为A()划分了一块内存空间,
当你实例化的时候,就不断的在给A分配存储空间,直到堆栈溢出了。
可以public class A{
A a=null;
}

自己重复new自己导致死循环

自己new死循环了,不断重复

CodeBlockDemo scb = new CodeBlockDemo();

cbd = new CodeBlockDemo();

这两行代码造成了死循环,注释掉一个就可以了

如楼上所说,你的方法不停的入栈,导致内存占用速度远远大于你的JVM的垃圾回收速度。
所以会导致栈溢出异常。

你的方法不停的入栈,导致内存占用速度远远大于你的JVM的垃圾回收速度。
所以会导致栈溢出异常。