面试题:Class.ForName和ClassLoader.loadClass的区别

1.前言

    JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化。下图是一个类在JVM中的完整生命周期,我们先重点关注类加载的五个部分。

   

    通过Java连接mysql的时候,经常可以看到代码Class.forName("com.mysql.jdbc.Driver"), 那这句代码起到什么作用呢?我们带着这个疑问,继续往下看。

 2.Class.ForName

    Class.ForName返回与给定的字符串名称相关联类或接口的Class对象,也就是进行类加载。我们直接上源码:

 

    通过源码可以看出两个细节点:

  •     加载出来的类会被初始化。
  •     类加载器使用的是调用forName方法的调用者的类加载器。    

3.ClassLoader.loadClass

    通过指定类加载器对类进行加载,但不会对类进行连接和初始化。上源码:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值