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