- 静态代码块
- 作用:初始化类的静态成员变量
- 执行时机:类加载进入内存之后,执行一次
类加载到内存指的是:将*.class文件加载到JVM的方法区中
- 普通代码块
- 作用:初始化类的非静态成员变量
- 执行时机:构造方法执行之前,执行一次
- 顺序:父类静态代码块 ->子类静态代码块 ->父类非静态代码块 -> 父类构造函数 -> 子类非静态代码块 -> 子类构造函数
public class Father {
static {
System.out.println("父类静态代码块");
}
{
System.out.println("父类非静态代码块");
}
public Father(){
System.out.println("父类构造函数");
}
}
public class Son extends Father{
static {
System.out.println("子类静态代码块");
}
{
System.out.println("子类非静态代码块");
}
public Son(){
System.out.println("子类构造函数");
}
public static void main(String[] args) {
Son son = new Son();
}
}