类加载过程

加载->链接(验证->准备->解析)->初始化

加载:

.class文件先通过类加载器,在方法区(Java8以前是永久代,Java8以后以元空间 落地实现)形成类结构(也叫类模板),再通过镜像在堆中形成Class类封装方法区的数 据结构。

链接:

1.验证:格式检查(例如魔数、版本、长度)、语义检查、字节码验证、符号引用 检 查;

2.准备:为类中静态变量分配内存空间,为基本数据类型的静态变量默认赋值,为基本数据类型的static final显式赋值,为引用类型的变量不管加不加static final都默认赋值,String较为特别,为字面量创建的String变量显示赋值,为new出来的String变量默认赋值;

3.解析:将符号引用变成直接引用;

初始化:

真正执行代码的阶段,为基本数据类型的静态变量显式赋值,为引用类型的变量显式赋值,为new出来的String变量显式赋值;

ps:静态变量(类变量)在链接和准备阶段初始化;

成员变量是在类的使用的赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值