今天做了一道题,我突然之间就忘记了static初始化的顺序是什么了,通过这道题,大概可以回忆一点什么的
public class StaticTest {
public static void main(String[] args) {
Myclass m1 = new Myclass();
Myclass m2 = new Myclass();
System.out.println(Myclass.count);
}
}
class Myclass{
public static int count = 0;
static {
count++;
}
public Myclass(){
count++;
}
}
问题是程序的输出结果是什么?
答案是:3;
我们来看看其中初始化顺序是什么样子的。编译器在初始化的时候的顺序是:
静态变量、静态初始化块->变量、初始化块->构造器。