方法二:
new org.gjt.mm.mysql.Driver();
这句不就是实例化了 org.gjt.mm.mysql.Driver 类的一个对象?

解决方案 »

  1.   

    class.forName()只是加载类,引用其中的静态成员,不生成实例
    而new org.gjt.mm.mysql.Driver() 生成实例,当然也要加载类,当然也可以引用其中的静态成员,
    至于System.setProperty("jdbc.drivers","org.gjt.mm.mysql.Driver")它的机制我就不清楚了,有高手能否解释一下
      

  2.   

    回yukikaze(樱吹雪) :
    光实例化了一个对象有什么用呢,不过我想Iamshigang()说的有道理回ldianfeng(呆鸟三号):
    那都是些CLASS文件怎么看源代码啊?回Iamshigang()  :
    可是加载类有什么用呢?不是类路径(Classpath)里已经设置好了吗?要使用一个类的静态成员不是直接使用就行了吗?干嘛还要加载类呢?
      

  3.   

    Class.forName("org.gjt.mm.mysql.Driver");//是加载驱动程序啊?
      

  4.   

    关于Class.forName()的作用 
    指定java虚拟机加载这个类,
    同时初始化这个类的静态初始化部分。 
    注意,没有创建这个类的实例。 
    一般在加载数据库驱动类的时候,
    驱动类的静态初始化部分会有初始化连接的作用。 
    如果这个类没有静态初始化的部分,我想这个语句应该也没有什么作用。
      

  5.   

    to:wanghongtaoleifeng(小声点) 
    是啊to:mmhhllRen(mhl)
    这么说我就明白了,那个System.setProperty("jdbc.drivers","org.gjt.mm.mysql.Driver")呢
      

  6.   

    因为System.getProperty()可以获得一些系统信息,比如System.getProperty("os.name");我想System.setProperty("jdbc.drivers","org.gjt.mm.mysql.Driver")其实就是把org.gjt.mm.mysql.Driver注册到jdbc.drivers上,然后系统自动通过jdbc.drivers象获取os.name一样获得驱动,从而加载吧;至于为什么要这样,还要请高手解释了:)
      

  7.   

    看下API的实现方式即源码那里怎么实现的估计是提供了几种方式,所以就有了你所说的问题