转载自 Class.forName()和ClassLoader.getSystemClassLoader().loadClass()区别

class A
{static {System.out.println("Class A is Loading now");}public A(){System.out.println("A new Class A instance is creating now ...");}
};class B
{public static void main(String[] argv){try{//Class.forName("A");ClassLoader.getSystemClassLoader().loadClass("A");}catch(Exception e){System.out.println(e);}}
};

使用Class.forName()的静态方法jvm会装载类 并且执行 static { }中的代码,而Class.Loader.loadClass()不会执行static()的代码。

在常用的JDBC驱动中,就是使用了这个方法。

public class Driver extends NonRegisteringDriver implements java.sql.Driver {// ~ Static fields/initializers// ---------------------------------------------//// Register ourselves with the DriverManager//static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException("Can't register driver!");}}// ~ Constructors// -----------------------------------------------------------/*** Construct a new driver and register it with DriverManager* * @throws SQLException*             if a database error occurs.*/public Driver() throws SQLException {// Required for Class.forName().newInstance()}
}

以上代码摘录自mysql的jdbc驱动。

Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection(url,user,pwd);

写程序时候的调用,这也是我当初刚看这段代码的时候,始终想不明白的地方。

现在总算知道了来龙去脉。

Class.forName()和ClassLoader.getSystemClassLoader().loadClass()区别相关推荐

  1. Class.forName和ClassLoader有什么区别

    本文来说下Class.forName 和 ClassLoader 有什么区别 文章目录 概述 实例测试 应用场景 本文小结 概述 在 java 中 Class.forName() 和 ClassLoa ...

  2. 面试题:Class.forName 和 ClassLoader 有什么区别?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://t.cn/AiQQ7dwi 在 java 中 ...

  3. 获取第二个匹配class_面试题:Class.forName 和 ClassLoader 有什么区别?

    来源:http://t.cn/AiQQ7dwi 在 java 中 Class.forName() 和 ClassLoader 都可以对类进行加载.ClassLoader 就是遵循双亲委派模型最终调用启 ...

  4. 面试题鬼的很:Class.forName 和 ClassLoader 有什么区别?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 来源 | http://rrd.me/eW9gG 在 ja ...

  5. 面试官 | Class.forName 和 ClassLoader 有什么区别?

    作者 | 纪莫 来源 | dwz.date/eUc 在 Java 中 Class.forName() 和 ClassLoader 都可以对类进行加载.ClassLoader 就是遵循双亲委派模型最终调 ...

  6. Class.forName 和 ClassLoader 到底有啥区别?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 纪莫 来源 | https://www.cnblogs. ...

  7. Java中Class.forName和 ClassLoader.loadClass()区别

    一.类加载过程 装载:通过累的全限定名获取二进制字节流,将二进制字节流转换成方法区中的运行时数据结构,在内存中生成Java.lang.class对象:    链接:执行下面的校验.准备和解析步骤,其中 ...

  8. 反射中Class.forName()和ClassLoader.loadClass()的区别

    一 Java类装载过程 装载:通过累的全限定名获取二进制字节流,将二进制字节流转换成方法区中的运行时数据结构,在内存中生成Java.lang.class对象: 链接:执行下面的校验.准备和解析步骤,其 ...

  9. 【重难点】【JVM 02】反射在 JVM 层面的实现流程、Class.forName() 和 ClassLoader.loadClass 的区别

    [重难点][JVM 02]反射在 JVM 层面的实现流程.Tomcat 的请求流程和 JVM 的类加载情况 文章目录 [重难点][JVM 02]反射在 JVM 层面的实现流程.Tomcat 的请求流程 ...

最新文章

  1. vbs文件放在java工程中如何调用_Eclipse软件导入Java工程文件的操作方法。
  2. 卡方 python_卡方优度检测 (Python 实现) --基于jupyter
  3. eclipse 搭建Android 开发环境(ADT安装和sdk下载,选择)
  4. 随机调用mysql数据库表值10条php_PHP随机显示mysql数据库中的数据
  5. 数据可视化大屏设计经验分享 【进阶篇】
  6. js常用内建对象之:String对象
  7. redis搭建 (centos)并测试验证
  8. 让你页面速度飞起来的前端性能优化方案
  9. 毕设题目:Matlab机器人路径规划
  10. 计算机专业工艺流程简述,CNC加工中心编程的工艺流程,新手必读! ! !
  11. 软件构造过程与配置管理
  12. Words Reciting 2016.5.4
  13. 实现一个简单的Database1
  14. 数据中台在企业数字化转型中的践行(上篇)
  15. 不同Normalization之间的比较
  16. ctfshow萌新红包题writeup
  17. python绘制光滑曲线
  18. Python数据分析实战之物流行业数据分析
  19. objective-c复制
  20. [转]Go在谷歌:以软件工程为目的的语言设计

热门文章

  1. 飞机游戏项目完整代码(详解JAVA300集)
  2. [PAT乙级]1007 素数对猜想
  3. [剑指offer]面试题26:复杂链表的复制
  4. [剑指offer]面试题1:赋值运算符函数
  5. 高等数学上-赵立军-北京大学出版社-题解-练习2.6
  6. number six
  7. caffe/common.cu error: function atomicadd has already been defined
  8. dsu on tree 题集 + ac代码
  9. [2020多校A层12.1]树(倍增/单调栈/dfs栈)
  10. Codeforces Round #507 (Div. 1) D. You Are Given a Tree 根号分治 + dp