1.类加载时,会执行static静态代码块,若有继承关系,则先去加载父类,再加载子类。
2.在构造器来生成对象时,必须先初始化父类的成员变量和普通代码块,然后在调用父类的构造器,再然后初始化本类普通成员变量和普通代码块,然后再调用本类的构造器。
3.static 代码块只执行一次。与类的加载一样,即已经加载完成无需再次加载。
public class Test {
Person person = new Person("Test");
static{
System.out.println("test static");
}
public Test() {
System.out.println("test constructor");
}
public static void main(String[] args) {
new MyClass();
}
}
class Person{
static{
System.out.println("person static");
}
public Person(String str) {
System.out.println("person "+str);
}
}
class MyClass extends Test {
Person person = new Person("MyClass");
static{
System.out.println("myclass static");
}
public MyClass() {
System.out.println("myclass constructor");
}
}
执行结果:
test static myclass static person static person Test test constructor person MyClass myclass constructor