我有如下场景 package com.example.test;执行顺序,静态块
public class StaticTest {
public static final String STATIC_VAR="Static Var";
static{
System.out.println("Static Block Called....");
}
public static void init(){}
}
package com.example.test;
public class MainClass {
public static void main(String[] args) {
System.out.println("Test static initialization");
String staticvar =StaticTest.STATIC_VAR;
System.out.println("Referred static variable--> "+ staticvar);
System.out.println("Calling static method");
StaticTest.init();
System.out.println("Static method invoked");
}
}
我得到的输出是
Test static initialization
Referred static variable--> Static Var
Calling static method
**Static Block Called....**
Static method invoked
和输出我所期待的是
Test static initialization
**Static Block Called....**
Referred static variable--> Static Var
Calling static method
Static method invoked
我想,只要我指静态变量静态块将得到执行。
有什么解释?
请参阅[Java静态类初始化](http://stackoverflow.com/questions/3499214/java-static-class-initialization)和[静态块和静态变量在一个类中执行的顺序是什么?](http ://stackoverflow.com/questions/12448465/in-what-order-are-static-blocks-and-static-variables-in-a-class-executed)。 –