java类的加载及初始化过程

时间:2022-01-05 11:51:22

比如Dog.java

Step1.当 new Dog() 或者 Dog.someStaticMehtod() 或者 Dog.someStaticVariable时java 解释器查找类路径,加载 Dog.class


Step2.Dog.class被加载了,此时创建出了一个 Dog.class对象。

此时Dog的所有静态获得都会别初始化(static 块,static 变量).

要注意,静态初始化只在Class对象首次加载时进行


Step3.如果Step1中是new Dog(),

这时候会有如下情况

  • 首先,在内存中分配一块内存空间
  • 其次,将这块内存空间清零(比如,int类型为0,引用类型为null)
  • 再次,执行所有成员变量(non-static)的初始化 最后,执行构造器(会从父类构造器开始调用,此处不详细探讨)