当一个程序调用某个类,这个类还没有被加载到内存中时,我们的系统会通过以下三个步骤来对该类进行初始化:
1、类的加载
类加载指的是将类的class文件读入内存中,并给它创建一个java.lang.Class对象。类的加载时由类加载器完成的,我们可以通过类加载器来加载以下来源的二进制数据:
--从本地文件系统加载class文件。
--从JAR包中加载class文件。
--从网络中加载class文件。
--将一个Java源文件动态编译,并进行加载。
2、类的连接
当类被加载后,系统就会生成一个Class对象,接着将二进制数据合并到JRE中。类连接又被分为以下几步:
--检验被加载的类是否有正确的内部结构,并且和其他类协调一致。
--为类的静态Field分配内存,并设置默认值。
--将类的二进制数据中的符号引用替换成直接引用。
3、类的初始化
类的初始化主要对静态Filed进行初始化,指定静态初始化可以通过声明静态Field时指定初始化值、可以通过静态初始化块为静态Field指定初始化值。
类的初始化主要按照以下步骤:
--如果这个类还没有被加载和连接,那么先加载后连接这个类。
--在执行第一个步骤时,应该去检查这个类的直接父类是否被初始化,如果没有初始化,就去先初始化它的直接父类(当然在初始化直接父类时,这个直接父类又有直接父类,还要去检查它的直接父类,以此类推)
--如果类中有初始化语句,那么依次去执行这些初始化语句。
转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/42609883
情绪控_
时间: 2024-10-07 07:04:25