class father{
static{
System.out.println("父类静态代码块");
}
{
System.out.println("父类普通代码块");
}
father(){
System.out.println("父类构造方法");
}
}
public class son extends father{
static{
System.out.println("子类静态代码块");
}
{
System.out.println("子类普通代码块");
}
son(){
System.out.println("子类构造方法");
}
public static void main(String[] args) {
new son();
}
}
输出结果:
父类静态代码块
子类静态代码块
父类普通代码块
父类构造方法
子类普通代码块
子类构造方法
结论:
- 一个类只有被创建实例的时候(new)才会被初始化
- 在被初始化的时候,如果是第一次初始化就会执行静态资源的加载,第一次以后静态资源就不会重复加载了
- 静态资源加载的顺序在非静态资源之前
- 普通代码块在每次创建实例的时候都会执行,在构造器之前