1、启动加载器(Bootstrap ClassLoader):虚拟机内置的类加载器。
2、平台类加载器(Platform ClassLoader):负责加载JDK中一些特殊的模块。
3、系统类加载器(System ClassLoader):负责加载用户类路径上所指定的类库。
类加载器委派模型:
使用最下面类加载器加载字节码文件,此时不会自己去加载,会向上一层一层委托其他加载器加载,其他类无法完成加载,会一层一层返回,此时子加载器才会自己加载。
使用最多的是系统类加载器:
ClassLoader.getSystemClassLoader()可以获取到系统类加载器,调用getParent()得到父类加载器(平台类加载器),再次调用getParent()可以得到(启动类加载器);
常用方法:
ClassLoader.getSystemClassLoader() // 获取系统类加载器
ClassLoader.getResourceAsStream(String name) //加载某一个文件
// 获取系统加载器
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
// 使用系统加载器加载prop.properties,ps:如果是相对路径则默认去该类所在文件寻找
InputStream is = systemClassLoader.getResourceAsStream("prop.properties");
// 创建Properties对象
Properties prop = new Properties();
// 使用prop对象读取文件数据
prop.load(is);
// 打印并关闭流
System.out.println(prop);
prop.clear();