什么时候发生静态类初始化?

什么时候发生静态类初始化?

何时初始化静态字段?如果我从未实例化过一个类,但我访问了一个静态字段,那么用于实例化私有静态字段的所有静态块和私有静态方法是否都在此时被调用(按顺序)?

如果我调用静态方法呢?它也运行所有的静态块吗?在方法之前?


慕尼黑的夜晚无繁华
浏览 756回答 3
3回答

阿波罗的战车

类的静态初始化通常在第一次发生下列事件之前立即发生:创建类的实例,调用类的静态方法,类的静态字段被分配,使用非恒定的静态字段,或对于顶级类,将执行在类中以词汇方式嵌套的断言语句。1.

开满天机

属性期间初始化静态字段。初始化类加载(加载、链接和初始化)的“阶段”,其中包括静态初始化器和其静态字段的初始化。静态初始化器按照类中定义的文本顺序执行。考虑一下这个例子:public class Test {    static String sayHello()  {       return a;    }    static String b = sayHello(); // a static method is called to assign value to b.                                  // but its a has not been initialized yet.    static String a = "hello";    static String c = sayHello(); // assignes "hello" to variable c     public static void main(String[] arg) throws Throwable {          System.out.println(Test.b); // prints null          System.out.println(Test.sayHello()); // prints "hello"     }}b打印null因为当sayHello在静态作用域中调用的静态变量。a没有初始化。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java