以下情况必须对类进行初始化 1.使用new关键字实例化对象、读取或设置类的静态字段、调用类的静态方法的时候。 2.通过java.lang.reflect包对类进行反射调用时,如果类没有初始化,则需要先触发其初始化。 3.当初始化一个类的时候,如果其父类没有被初始化,则需要先触发其初始化。 4.当虚拟机启动时,用户需要指定一个要执行的主类,会先初始化这个类。 5.使用JDK1.7动态语言支持的时候的一些情况。 以下情况不会进行初始化子类 1.调用的是父类的static方法或字段。 2.调用的是父类的final方法或字段。 3.通过数组来引用。