问题描述
- 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代码块,求解释啊,万分感谢!
时间: 2024-10-06 23:42:50