1、 主动使用(6种情况):JVM必须在每个类“首次 主动使用”的时候,才会初始化这些类。

    (1) 创建类的实例
    (2) 读写某个类或者接口的静态变量
    (3) 调用类的静态方法
    (4) 同过反射的API(Class.forName())获取类
    (5) 初始化一个类的子类
    (6) JVM启动的时候,被标明启动类的类(包含Main方法的类)只有当程序使用的静态变量或者静态方法确实在该类中定义时,该可以认为是对该类或者接口的主动使用。
    2、 被动使用:除了主动使用的6种情况,其他情况都是被动使用,都不会导致类的初始化。
    3、 JVM规范允许类加载器在预料某个类将要被使用的时候,就预先加载它。如果该class文件缺失或者存在错误,则在程序“首次 主动使用”的时候,才报告这个错误。(Linkage Error错误)。如果这个类一直没有被程序“主动使用”,就不会报错。