注意:
上溯到Object类,先执行Object的静态初始化块,在向下执行子类的静态初始化块,直到指定的类的静态初始化块为止
构造方法执行顺序和上面一样
实例:
/**
 * 测试static初始化块的用法
 * @author Lucifer
 */
public class UserNo3 {
    int id;
    String name;
    String pwd;
    static String company;
    //static初始化块
    static
    {
        System.out.println("执行类的初始化工作");
        company = "Lucifer‘s Company";
    }
    /*
    这个语句块用static修饰了
    在类初始化的时候执行
    这时候是做类的初始化,不能去调用成员变量
    如果有构造器则会在构造器之前执行
    1.先加载类
    2.弹到构造对象
     */
?
    //创建一个方法
    public static void printCompany(){
        System.out.println(company);
        return;
    }
?
    //main方法
    public static void main(String[] args) {
        //创建一个对象
//        UserNo3 u3 = new UserNo3();
        UserNo3 u3 = null;
        /*
        这里没有去创建对象也可以执行static类初始化的结构快
        说明创建对象在类初始化之后
         */
    }
}
原文:https://www.cnblogs.com/JunkingBoy/p/14613104.html