只是想知道为什么静态总是首先打印而不是方法。
代码:
public class TestMe {
static {
System.out.println("D");
}
{
System.out.println("B");
}
public void printMe() {
System.out.println("Z");
}
public static void main(String []args) {
new TestMe().printMe();
}
}
输出:
D
B
Z
答案 0 :(得分:6)
静态块被执行( > >)所以它们比实例级别块/方法更早执行(在创建对象后执行)
答案 1 :(得分:2)
答案 2 :(得分:2)
因为在加载类时会执行static
块。
答案 3 :(得分:2)
您的班级中有两种类型的初始化程序块
一个是static initializer
,它是在初始化类时执行的
A static initializer declared in a class is executed when the class is initialized
两个是Instance Initializers
,它在类的实例已经创建时执行
An instance initializer declared in a class is executed when an instance of the class is created
因此,当初始化类时将直接调用static initializer
vs Instance Initializers
,当已创建该类的实例时调用该static initializer
,因此首先执行{{1}}。