当程序主动使用某个类时,若是该类还未被加载到内存中,则系统会经过加载,链接,初始化三个步骤来对该类进行初始化。java
类加载指的是将类的class文件读入到内存,并为之建立一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象。网络
经过使用不一样的类加载器,能够从不一样来源加载类的二进制数据,一般有如下几种来源spa
从本地文件系统加载class文件orm
从JAR包加载class文件对象
用过网络加载class文件内存
把一个Java源文件动态编译,并执行加载it
四、当类被夹在以后,系统会为之生成一个对应的class对象,接着进入链接阶段。链接负责把类的二进制数据合并到JRE中。编译
验证:检验被加载的类是否有正确的内部结构,并和其余类协调一致。class
准备:为类的静态Field分配内存,并进行出初始化。引用
解析:将类的二进制数据中的符号引用替换成直接引用。
五、类的初始化
(1)、假设这个类尚未被加载和链接,则会加载并链接该类。
(2)、假如该类的直接父类尚未被初始化,则先初始化直接父类,因此JVM最早初始化的老是java.lang.Object类。
(3)、假如类中有初始化语句,则系统依次执行这些初始化语句。
、