Java中类的初始化顺序

来源:互联网 发布:路老膏方 网络网站 编辑:程序博客网 时间:2024/05/16 12:45

今天做了一道题,我突然之间就忘记了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;


我们来看看其中初始化顺序是什么样子的。编译器在初始化的时候的顺序是:

    静态变量、静态初始化块->变量、初始化块->构造器。 

像这道题,首先编译器会初始化静态变量count,然后初始化静态块,然后创建两个Myclass对象时有两次count++;最终得到count的值为3;

0 0