1 package com.mariadb.test; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 //import org.mariadb.jdbc.Driver; 9 10 public class Test { 11 public static void main(String[] args) throws ClassNotFoundException, 12 SQLException { 13 // Class.forName("org.mariadb.jdbc.Driver"); 14 15 System.out.println("1"); 16 17 Connection conn = DriverManager 18 .getConnection("jdbc:mariadb://localhost:3306/test?user=root&password=bdqn"); 19 20 System.out.println(DriverManager.getDriver("jdbc:mariadb://localhost:3306/test?user=root&password=bdqn")); 21 22 Statement statement = conn.createStatement(); 23 24 ResultSet rs = statement.executeQuery("SELECT * FROM `tb1`"); 25 26 while (rs.next()) { 27 System.out.println(rs.getInt(1) + "\t" + rs.getString(2)); 28 } 29 } 30 }
上面这段代码中 并没有操作Driver这个驱动类 项目中也仅仅把驱动jar包加入进来而已 我想请问一下 引用的外部jar包里的类 会在java虚拟机启动的时候被装载嘛
java中有类加载器,运行java程序首先将bootStrop类加载器加载到内存运行,该加载器再加载其他的类加载器,比如extention classLoader 和Application classLoader两个常用的类加载器。类加载器是动态加载,当程序运行时发现需要某个类时,会利用反射加载这个相应的类到内存中运行。
也就是说仅仅添加进项目的jar包中的类不会被装载?
@所以_WW: 想想,一个jar中就那么多class,随便一个项目那么多个jar,,,效率可想而知了
@苏幕遮soft: 好的 谢谢
@所以_WW:去看看java反射吧,,
@苏幕遮soft: 就是之前看了反射 才想到今天这个问题的