2 huki87 huki87 于 2014.04.17 10:14 提问

java对象初始化的问题

java类中成员变量是自身对象的问题,可以知道如果这个成员变量是非static的,那么会出现stackOverflowError,即创建了一个A对象,A对象初始化时又会创建一个A对象,从而造成死循环,那么如果这个成员变量是static的,不会出现这个问题,但是运行结果我不是很懂,上代码:

public class Test {
public static void main(String[] args) {
Person p=new Person("a");
//Boy b=new Boy("b");

}

}
class Person{
private int id;
Person p=new Person("bb");
//static Boy b=new Boy("bb");
static {
System.out.println("静态代码块!");
}
{
System.out.println("非静态代码块!");
}
Person(String s){
System.out.println("构造器"+s);
}
}
运行结果为:
非静态代码块!
构造器bb
静态代码块!
非静态代码块!
构造器a
就是该static成员变量即Person对象初始化时没有执行static代码块,求解释啊,万分感谢!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!