java 类加载机制(流程)

java 类加载机制(流程)

java 类加载过程,主要分为 加载--> 连接 --> 解析 --> 初始化

连接又细分为:验证 --> 准备 --> 解析

加载:通过io把class的字节码加载再jvm的方法区里,并且在堆中创建class对象

验证:是检验class是不是符合标准的

准备:初始化静态变量(如  int 的静态变量 i 附一个初始化的0 static  int i = 0), 再分配内存

解析:将变量的符号引用改为直接引用

初始化:给静态变量赋值,运行静态代码块

------------------------------------------------------分页--------------------------------------------------------------

验证:java会把我们的写得java文件,编译成这样的字节码class文件,下图是一个class的文件内容,类加载的时候会去验证这些十六进制的内容是不是符合标准(具体可以参考 Java虚拟机规范

 

准备:就是给静态(static)变量赋初始化值 ,  下图这个时候i 会被初始化 i = 0 (double类型初始化 0.0; float类初始化 0.0 ; boolean 类型初始化 false ; String 类型初始化 null)

public class ClassInitialization {

    //初始化值 i =0;
    static int i = 5;

}

题外话:常量( final static ) 赋值在编译的时候,实例变量是赋值在产生class对象的时候

 

解析:将变量的符号引用改为直接引用。 

就好比你去买奶茶,(珍珠椰果红豆Q果布点奶盖红茶,三分糖,去冰)已经点好了(new ClassloderDemo),但还没给你,等做好了,才交给你(解析的时候)

就这里的

ClassloderDemo classloderDemo = new ClassloderDemo();

就是在解析的时候,classloderDemo才引用对象

public class ClassloderDemo {

    public static void main(String[] args) {
        ClassloderDemo classloderDemo = new ClassloderDemo();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值