一、定义了main的类,启动main方法时该类会被加载
二、创建类的实例,即new对象的时候
此时被加载的类有Father及Field类,我们重启服务,然后去访问创建子类的实例。为什么要重启呢?因为每个类在虚拟机生命周期中如果存在,则不会重复加载。不重启的话,看不到我们想要的效果。
2、创建子类的实例
在创建子类实例的时候,在加载子类之前会优先加载其父类。
三、访问类的静态方法
四、访问类的静态变量
五、反射 Class.forName()
总结
java类在以上五种情况下会被加载。
在jvm生命周期中每个类如果存在,则不会重复加载。
在加载子类的时候会优先加载其父类。
类被加载的时候,其中的静态代码块、静态方法及静态变量也会被加载。
在初始化某个类时,如果这个类的静态代码块、静态方法或静态变量引用到了另一个类,则这个类也会被加载。