首页 新闻 会员 周边

一个关于类装载的问题

0
悬赏园豆:50 [已解决问题] 解决于 2015-09-24 22:16
 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虚拟机启动的时候被装载嘛 

qiuxs的主页 qiuxs | 初学一级 | 园豆:165
提问于:2015-09-24 21:29
< >
分享
最佳答案
0

java中有类加载器,运行java程序首先将bootStrop类加载器加载到内存运行,该加载器再加载其他的类加载器,比如extention classLoader 和Application classLoader两个常用的类加载器。类加载器是动态加载,当程序运行时发现需要某个类时,会利用反射加载这个相应的类到内存中运行。

收获园豆:50
苏幕遮soft | 菜鸟二级 |园豆:401 | 2015-09-24 22:10

也就是说仅仅添加进项目的jar包中的类不会被装载?

qiuxs | 园豆:165 (初学一级) | 2015-09-24 22:11

@所以_WW: 想想,一个jar中就那么多class,随便一个项目那么多个jar,,,效率可想而知了

苏幕遮soft | 园豆:401 (菜鸟二级) | 2015-09-24 22:15

@苏幕遮soft: 好的 谢谢

qiuxs | 园豆:165 (初学一级) | 2015-09-24 22:15

@所以_WW:去看看java反射吧,,

苏幕遮soft | 园豆:401 (菜鸟二级) | 2015-09-24 22:17

@苏幕遮soft: 就是之前看了反射 才想到今天这个问题的

qiuxs | 园豆:165 (初学一级) | 2015-09-24 22:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册