类的加载过程:类的加载—>类的连接—>类的初始化
①类的加载:将类的 .class文件读入内存,并为之创建一个java.lang.Class对象。
此过程由类加载器完成
②类的链接:将类的二进制数据合并到JRE中
加载类的静态内容
③类的初始化:JVM负责对类进行初始化
对类静态内容初始化
类加载器ClassLoader
JVM 定义了两种类型的类加载器:
① 启动类加载器(bootstrap)
②用户自定义加载器(user-defined class loader)
JVM在运行时会产生3个启动类加载器
①引导类加载器:
用C++编写的,是JVM自带的类装载器。
负责Java平台核心库,用来装载核心类库。该加载器无法获取,尝试获取。返回null
②扩展类加载器:
负责jre/lib/ext目录下的jar包或 –D java.ext.dirs 指定目录下的jar包装入工作库
③系统类加载器:
负责java –classpath 或 –D java.class.path所指的目录下的类与jar包装入工作
是最常用的加载器
使用类加载器加载属性文件
public class ClassLoaderTest {
@Test
public void test1() throws IOException{
//1 创建属性文件实例
Properties props=new Properties();
//2 加载(获取)属性文件
①:本地属性文件:当前项目、C盘*/
//props.load(new FileInputStream("./jdbc.properties"));
②:远程属性文件:包名+属性文件名(bin中与.class文件同路径)
ClassLoader cl = this.getClass().getClassLoader();
InputStream in=cl.getResourceAsStream("ClassLoader/jdbc.properties");
props.load(in);
//3 获取属性文件内容
String userName=props.getProperty("userName");
String passWord=props.getProperty("passWord");
//4 使用获取
System.out.println(userName);
System.out.println(passWord);
}
}