Java类加载笔记(1)

当一个程序调用某个类,这个类还没有被加载到内存中时,我们的系统会通过以下三个步骤来对该类进行初始化:


                                                                                                


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     情绪控_ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值