假设有一个Dog的类。
1、当首次创建类型为Dog的对象时(构造器可以看成是静态方法),或者Dog类的静态方法/静态字段首次被访问时,java解释器必须查找类路径,以定位.class文件 。
2、然后载入Dog.class,有关静态初始化的所有动作都被执行。因此,静态初始化只在Class对象首次加载的时候进行一次。
3、当用new Dog()创建对象的时候,首先将在堆上为Dog象对分配足够的存储空间。
4、这块存储空间会被清零,这就自动地将Dog对象中的所有基本类型数据都设置成了缺省值,而引用则被设置成了null。
5、执行所有出现于字段定义处的初始化动作。
6、执行构造器。
-----------------
书本P112页的例子认真调试了一次,看到确实是先进行了静态对象的初始化工作,其次才是非静态对象。