如何在Java中初始化字段变量?

Ank*_*kit 0 java

我试图运行此程序,但这会产生运行时错误(StackOverflowError).如果在类Static中我将引用对象ob,static,则不会发生错误.任何人都可以请解释我为什么会发生这种情况,请解释我如何初始化字段变量(无论是静态还是非静态以及引用或非引用变量)?

public class Static {

    public Static ob = new Static();
    private int a;

    public void win(Static obj) {
        //System.out.printf("ob.a = %d\n", ob.a);
        obj.a = 15;
        System.out.printf("ob.a = %d", ob.a);
    }
}

public class StaticTest {

    public static void main(String args[])
    {
        Static obj=new Static();
        //Static obj1=new Static();

        // obj.win(obj1.ob);
    }
}
Run Code Online (Sandbox Code Playgroud)

MBy*_*ByD 5

每次实例化一个Static类的对象(非常混乱的名称BTW)时,你创建一个对象Static并实例化它,它创建另一个对象Static并实例化它等等......(所以你得到一个StackOverflow错误):

public Static ob = new Static();
Run Code Online (Sandbox Code Playgroud)