为什么连接jdbc要 class.forName(String url)l

学习java一年多了 始终不知道使用JDBC连接数据库的时候为什么要class.forName(String derverurl)去实例化derver
这样是实例化驱动的意思吗?那为什么不直接实例化这个类呢,
能不能具体给我讲一下 加载器是什么意思 真的没搞懂,现在很头疼

首先,Class.forName(xxxxx)并不是实例化驱动,是返回一个类模板,也就是class对象。这样做的目的是:将驱动类的class文件加载到内存中。

所谓的加载就是,将class文件放到内存中,而加载所用的东东就是类加载器:Classloader。追问

说实话 这么多回答的 你是最靠谱的一个
class.forname()是加载我是明白的
类名.class是加载我也是明白的
就是不明白为什么不直接new这个对象呢 加载到底是什么意思

你回答了以后 我稍微有点明白了 你的意思是说 java虚拟机本来没有class文件的是么
我们把包放到工程里了 但是jvm根本还没有 所以要在它实例化之前 先把这个class文件放进jvm

我是这样理解你说的意思 不知道对不对

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-21
把JDBC 驱动类装载入Java虚拟机中。为此,可用Class.forName()方法,此方法将给的类加载到java虚拟机中。如果系统中不存在给定的类,会发生异常,异常类型为ClassNotFoundException.

Class.forName("JDBC驱动类名称");
第2个回答  2011-07-22
利用反射,找到数据库驱动,实例化驱动
加载驱动有3种方法:第一种就是class.forName();另外两种自己百度吧,都不常用!!
第3个回答  2011-07-24
让java虚拟机加载驱动类到内存(这只是一种方法而已)
第4个回答  2011-07-30
这个是java里的反射机制,可以直接根据类名生成对象
第5个回答  2011-07-30
java里的反射机制,class.forName(类名);可以根据类名实例化一个此类的对象。
当我们用DriverManager.getConnection连接数据库的时候,会用的这个类对象,只不过具体怎么操作是各个数据库开发商根据java提供的接口实现的。你可以反编译了看一下,整个连接数据库的过程你就明白了
相似回答