解惑Class.forName("com.mysql.jdbc.Driver")

Class.forName("xxx.yyy.zzz"):将xxx.yyy.zzz类的字节码加载到内存,并创建对应的Class类对象返回(当zzz中有静态代码块,则静态代码块随字节码加载而执行了)。

关于Class.forName("com.mysql.jdbc.Driver"):

com.mysql.jdbc.Driver中代码:

 package com.mysql.jdbc;

import java.sql.DriverManager;

import java.sql.SQLException;

public class Driver extends NonRegisteringDriver implements java.sql.Driver {

static {

try {

DriverManager.registerDriver(new Driver());

} catch (SQLException E) {

throw new RuntimeException("Can't register driver!");

}

}

}

当调用Class.forName("com.mysql.jdbc.Driver")时,DriverManager.registerDriver(new com.mysql.jdbc.Driver())执行了(com.mysql.jdbc.Driver()只被new了一次)。

为什么不用DriverManager.registerDriver(new com.mysql.jdbc.Driver())?

第一:存在硬编码;

第二:com.mysql.jdbc.Driver()被new了两次。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JDBC简介 SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC。JDBC...
    奋斗的老王阅读 1,541评论 0 51
  • 本人的环境为Myeclipse10、MySQL5.7.15 本文包括:简介JDBC编程步骤打通数据库程序详解—Dr...
    廖少少阅读 3,998评论 7 39
  • 【原文】(13.4) 樊迟请学稼。子曰:“吾不如老农。”请学为圃。曰:“吴不如老圃。”樊迟出。子曰:“小人...
    钱江潮369阅读 533评论 0 3
  • 17岁,正逢人生的雨季。悄然吐蕊的小花,在风雨中飘摇成长,逐渐蜕变出坚强的模样。多少千愁万绪,终是时...
    安妮在简书阅读 557评论 2 0
  • 你说爱像云 要漂浮自在才美丽 我终于相信 分手的理由有时候很动听 --阿桑《一直很...
    陌上花开君如玉阅读 886评论 0 1