静态代码块:即类的静态代码块,是和类一起加载到内存的,即比构造方法先执行的同时还要比匿名代码块先执行,且只执行唯一的一次。
匿名代码块:即类的代码块,每次创建对象时会在构造方法之前执行一次
public class test4 {
public static void main(String... args) {
System.out.println("main方法开始执行");// 2
test4 ts1 = new test4();
System.out.println("main方法开始执行2");// 5
test4 ts2 = new test4();
}
public test4() {
System.out.println("构造方法开始执行");// 4、7
}
{
System.out.println("匿名代码块开始执行");// 3、6
}
static {
System.out.println("static静态代码块开始执行");// 1
}
}
假如静态代码块里面有构造方法:
public class test4 {
public static void main(String... args) {
System.out.println("main方法开始执行");// 2
test4 ts1 = new test4();
System.out.println("main方法开始执行2");// 5
test4 ts2 = new test4();
}
public test4() {
System.out.println("构造方法开始执行");// 4、7
}
{
System.out.println("匿名代码块开始执行");// 3、6
}
static {
test4 t4 = new test4();
System.out.println("static静态代码块开始执行");// 1
}
}