构造方法会在对象创建时执行,且可以执行多次。 静态代码块则是在程序运行时执行,它比构造方法优先执行。不过,它只会执行一次。

public class Main{
    public static void main(String[]args){
        //new 对象意味着该程序的执行,此时会调用构造方法和静态代码块
        TestStatic t1 = new TestStatic();
        TestStatic t2 = new TestStatic();
    }
}
class TestStatic{
    public TestStatic(){
        System.out.println("执行构造方法!");
    }
    static{
        System.out.println("执行静态代码块!");
    }
}

运行结果:

执行静态代码块!
执行构造方法!
执行构造方法!

可以看到执行了两次构造方法和一次静态代码块。