JDBC剖析篇(1):java中的Class.forName()

在java中使用JDBC连接数据库时,常用下面的语句来实现,却很少去一探究竟

Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://"+dbServer+":"+dbPort+"/"+dbName,userName,passWord);

今天我们来看看为什么要这么做,它是怎么实现的

资源文章:

http://www.jb51.net/article/46011.htm

http://www.zhihu.com/question/22925738

http://www.cnblogs.com/sunzn/p/3187868.html

http://www.360doc.com/content/10/0712/10/1720440_38421273.shtml

jvm在加载类的时候是不会执行静态代码的,只有在初始化的时候才会去执行

理解:

时间: 2024-08-30 00:47:32

JDBC剖析篇(1):java中的Class.forName()的相关文章

java中的Class.forName的作用

Class.forName(xxx.xx.xx) 返回的是一个类 首先你要明白在java里面任何class都要装载在虚拟机上才能运行.这句话就是装载类用的(和new 不一样,要分清楚). 至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点. A a = (A)Class.forName("pacage.A").newInstance(); 这和你 A a = new A(): 是一样的效果. 关于

《Android进阶》之第一篇 在Java中调用C库函数

在Java代码中通过JNI调用C函数的步骤如下: 第一步:编写Java代码 1 class HelloJNI{ 2 native void printHello(); 3 native void printString(String str); 4 5 static {System.loadLibrary("hellojni");} 6 7 public static void main(String args[]) { 8 HelloJNI myJNI = new HelloJNI(

JDBC剖析篇(2):JDBC之PreparedStatement

一次有人问我为什么要使用JDBC中的PreparedStatement,我想了想,说可以“防止SQL注入”,其他的却不能说出个一二三,现在来看看其中的秘密 未完待续 参考文章: http://www.jb51.net/article/40138.htm

Java中的类装载和初始化模块

在Java中,初始化模块是指用一对"{}"括起来的代码,可以与构造方法一起来对对象进行初始化.初始化模块又分为实例初始化模块和静态初始化模块(只能由类的静态成员引用,在类装载时进行调用) Java中,代码的执行顺序是: 1.装入类     1.1递归装入父类,直到继承链上的父类全部装入为止.     1.2类装入内存之后,静态数据域和静态初始块按照在类中出现的顺序进行执行. 2.调用类的构造方法     2.1递归调用父类的构造方法,直到父类为java.lang.Object为止.  

java中为什么重写equals时必须重写hashCode方法?

在上一篇博文Java中equals和==的区别中介绍了Object类的equals方法,并且也介绍了我们可在重写equals方法,本章我们来说一下为什么重写equals方法的时候也要重写hashCode方法. 先让我们来看看Object类源码 /** * Returns a hash code value for the object. This method is * supported for the benefit of hash tables such as those provided

Java中的IO流(五)

上一篇<Java中的IO流(四)>记录了一下Properties类,此类不属于IO流,它属于集合框架.接下来说一下IO流中的其它流 一,打印流PrintStream PrintStream为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式.并且此注永远不会抛出IOException. 此流的构造函数大致分三类 1,接收File文件类型的 2,接收OutputStream类型的 3,接收文件名形式的 下演示一下此流的两个方法 1 private static void functio

Java中的集合框架-Map

前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从本篇开始,对集合框架里的另外一部分Map作一下记录. 一,集合框架的Map接口 Map与Collection不同之处在于它是以键值对来存储数据: Map比较常用的实现类有四个:HashTable,HashMap,LinkedHashMap,TreeMap: Map的方法也可以分为四类,增删改查,大致如下: 新

Java中的容器(集合)之HashMap源码解析

1.HashMap源码解析(JDK8) 基础原理: 对比上一篇<Java中的容器(集合)之ArrayList源码解析>而言,本篇只解析HashMap常用的核心方法的源码. HashMap是一个以键值对存储的容器. hashMap底层实现为数组+链表+红黑树(链表超过8时转为红黑树,JDK7为数组+链表). HashMap会根据key的hashCode得到对应的hash值,再去数组中找寻对应的数组位置(下标). hash方法如下: static final int hash(Object key

Java中InvocationHandler接口中第一个参数proxy详解

java动态代理机制中有两个重要的类和接口InvocationHandler(接口)和Proxy(类),这一个类Proxy和接口InvocationHandler是我们实现动态代理的核心: 1.InvocationHandler接口是proxy代理实例的调用处理程序实现的一个接口,每一个proxy代理实例都有一个关联的调用处理程序:在代理实例调用方法时,方法调用被编码分派到调用处理程序的invoke方法. 看下官方文档对InvocationHandler接口的描述: {@code Invocat