两个无意识的循环

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21727627/article/details/79005620

1.一个是在jvm init()初始化成员变量时

public class TestNull {
private  TestNull aNull=new TestNull();
    public static void main(String[] args) {
        TestNull testNull=new TestNull();
    }
    @Override
    public String toString() {
        return "你好"+this;
    }
}
init 方法的字节吗如下:

 0 aload_0
 1 invokespecial #1 <java/lang/Object.<init>>
 4 aload_0
 5 new #2 <TestNull>
 8 dup
 9 invokespecial #3 <TestNull.<init>>  原因在这里重复调用了
12 putfield #4 <TestNull.aNull>
15 return
2.在原来的代码上添加上并注释掉成员变量或者改成static也行: System.out.println(testNull)造成无限的调用toString();

ps:应该没有人写这蛋疼的代码,记录一下. 

猜你喜欢

转载自blog.csdn.net/qq_21727627/article/details/79005620