序
重要结论
先说结论,再去观察实验现象,印证结论。
- 静态变量初始化和静态代码块的执行顺序是:按照它们在类中出现的顺序进行的。
代码实验
实验1
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class JavaStaticTest {private final static String VAR = "xx";//0static {System.out.println("world!");//1}private final static Logger logger = getLogger();//2public static void main(String[] args) {System.out.println("hello");//4}public static Logger getLogger(){System.out.println("Hahaha");//3return LoggerFactory.getLogger(JavaStaticTest.class);}
}
实验2
public class StaticOrder {static {System.out.println("Static Block 1");//1.1}static int a = initializeA();//2.1static {System.out.println("Static Block 2");//3}static int b = initializeB();static int initializeA() {System.out.println("Initializing A");//2.2return 10;}static int initializeB() {System.out.println("Initializing B");//4return 20;}public static void main(String[] args) {System.out.println("Main Method");//5}
}
out
Static Block 1
Initializing A
Static Block 2
Initializing B
Main Method
X 参考文献
- 无