类的加载过程
类的加载过程一般分为三个大阶段,加载阶段、连接阶段、初始化阶段。
1加载阶段:主要是负责查找并加载类的二进制数据文件,其实就是class文件。 2连接阶段:连接阶段的工作主要分为三个阶段
验证:主要是确保类文件的正确性。准备:为类的静态变量分配内存,并为其初始化。解析:把类中的符号引用转换为直接引用。
3初始化阶段:为静态变量赋予正确的初始值(代码编写阶段给定的值)
类的主动加载与被动加载
jvm中每个类或者接口被java程序首次主动使用时才会对其进行初始化。
6种主动使用类的场景:
通过new关键字会导致类的初始化访问类的静态变量会导致类的初始化访问类的静态方法对某个类进行反射操作初始化子类会导致父类的初始化启动类
除了上述六种情况,其余的都被称为被动使用,不会导致类的初始化。
引用类的静态常量不会导致类的初始化。构造某个类的数组时不会引起该类的初始化。