我试图运行此程序,但这会产生运行时错误(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)
每次实例化一个Static类的对象(非常混乱的名称BTW)时,你创建一个对象Static并实例化它,它创建另一个对象Static并实例化它等等......(所以你得到一个StackOverflow错误):
public Static ob = new Static();
Run Code Online (Sandbox Code Playgroud)