关于Java 加载类

一。Java 有三大加载器 


        根类加载器  boostrap     扩展类加载器  extention  系统加载器   APP


        根类主要是为了 加载jvm初始化一些必须的东西;

       扩展类只要是 jdk/jre/lib/ext/中的扩展类

     系统加载器就是java项目中classpath中的类


   加载类原则是,获取当前类的加载器(委托加载器),自上而下去 加载器 去加载   根类--> 扩展类--> 系统加载器 --> 自定义加载器(如果有的话)

   这个流程中随便哪一级查找到需要加载的类,就会返回该类的实例

   如果没有找到就会  继续用委托加载器 加载类的  加载器再加载一次,如果还是没有找到  就会 报 clssNotFundException 


 自定义的类加载器要继承 Java.lang.ClassLoad 并重写 findClass方法



  

 类的加载分为  :

  1.加载    2.连接   3.初始化


   加载:  找到类进行加载到jvm 中,以二进制流的形式放到jvm的方法区中

  连接:   

         1.验证   :格式检查,语义检查,字节码检查,验证符号引用是否存在直接引用

         2:准备 : 就是给静态变量赋值,初始化的值   比如  int  赋值=0   long =0l  .......

        3. 解析:      将符号引用转为直接引用  ;


初始化:对类的静态变量进行赋值的操作

  首先是 父级的静态代码块 --自己的静态代码块 --父级的成员变量赋值 --自己的成员变量赋值 --父级的构造方法-自己的构造方法


  Class.form  和  loadClass.classLoad 都可以获取一个类的class

  但是class.form会初始化一个类

  而 loadClass.classLoad ,只是加载一个类,并不会去连接和初始化




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值