先看一段程序:
public class Str {
static {
System.out.println("static{1}");
}
static {
System.out.println("static{2}");
}
{
System.out.println("{}");
}
Str() {
System.out.println("Str()");
}
public static void main(String[] args) {
new Str();
new Str();
}
}
执行结果为:
static{1}
static{2}
{}
Str()
{}
Str()
结论:
- 静态代码块按顺序执行,且执行一次(类加载时执行)
- 构造代码块,每次new对象时执行,且先于构造函数执行
- 执行构造函数