Java为什么静态打印出文本而不是方法

时间:2014-08-18 06:24:18

标签: java

只是想知道为什么静态总是首先打印而不是方法。

代码:

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

4 个答案:

答案 0 :(得分:6)

首次初始化时,

静态块被执行( > >)所以它们比实例级别块/方法更早执行(在创建对象后执行)

答案 1 :(得分:2)

因为当类初始化时会执行


另见

答案 2 :(得分:2)

因为在加载类时会执行static块。

答案 3 :(得分:2)

您的班级中有两种类型的初始化程序块

一个是static initializer,它是在初始化类时执行的

8.7. Static Initializers

A static initializer declared in a class is executed when the class is initialized

8.6. Instance Initializers

两个是Instance Initializers,它在类的实例已经创建时执行

An instance initializer declared in a class is executed when an instance of the class is created 

这些来自JLS documentation

因此,当初始化类时将直接调用static initializer vs Instance Initializers,当已创建该类的实例时调用该static initializer,因此首先执行{{1}}。