类加载器的创建

1.什么是类加载器

<1>概念:类加载器是用来加载类的工具(从硬盘加载到JVM内存)
<2>类加载器的加载时机【类在使用时才被加载,不使用不加载】
a.创建类的对象时
b.通过类名调用静态方法时
c.通过反射加载类
<3>3.类加载器的分类
a.启动类加载器:Bootstrap ClassLoaders,负责加载JAVA_HOME\lib目录下的jar和class文件
b.平台类加载器:Platform ClassLoader
c.系统类加载:System ClassLoader
d.自定义类加载器
【双亲委派模型 a>b>c>d,逻辑上的继承关系,最下层传递任务给最上层,上层范围之外的则会依次返回下层】

2.获取类加载器
//获取类加载器
public class Demo1 {
    public static void main(String[] args) {
        //获取系统类加载器
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();

        //获取系统类加载器的父加载器 --平台加载器
        ClassLoader classLoader1 = systemClassLoader.getParent();

        //获取平台类加载器的父加载器 --启动类加载器
        ClassLoader classLoader2 = classLoader1.getParent();

        System.out.println("系统类加载器" + systemClassLoader);
        System.out.println("平台类加载器" + classLoader1);
        System.out.println("启动类加载器" + classLoader2);
    }
}

打印结果:
--------------------------------------------------------------------------------------------------
系统类加载器jdk.internal.loader.ClassLoaders$AppClassLoader@3fee733d
平台类加载器jdk.internal.loader.ClassLoaders$PlatformClassLoader@3941a79c
启动类加载器null
3.类加载器应用
//使用类加载器src目录下的配置文件 config.properties
//不局限于电脑路径
public class Demo1 {
    public static void main(String[] args) throws IOException {
        //static classLoader getSystemClassLoader()获取系统类加载器
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        //InputStream getResourceAsStream(String name)加载某一个资源文件[src目录下]
        //利用加载器去加载一个指定的文件[不在src下在报null exception]
        //参数:文件的路径
        //返回值:字节流
        //自动封装返回一个字节流
        InputStream is = systemClassLoader.getResourceAsStream("config.properties");
        //创建Properties集合【配置文件只能为英文】
        Properties properties = new Properties();
        properties.load(is);
        System.out.println(properties);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陪雨岁岁年年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值