1. 类加载器

类加载器:负责将.class文件 加载到内存中

2. 类加载时机

  1. 创建类的实例(对象)
  2. 调用类的类方法
  3. 访问类或者接口的类变量,或者为该类变量赋值
  4. 使用反射方式来强制创建某个类或者接口对应的java.lang.Class对象
  5. 初始化某个类的子类
  6. 直接使用java.exe命令来运行某个主类

用到就加载,不用不加载

3. 类加载的过程

37. 类加载器 - 图1

37. 类加载器 - 图2

37. 类加载器 - 图3

37. 类加载器 - 图4

37. 类加载器 - 图5

4. 类加载器的分类

启动类加载器: 虚拟机内置的类加载器 底层C++编写的

平台类加载器: 负责加载JDK中一些特殊的模块

系统类加载器: 负责加载用户类路径上所指定的类库

5. 双亲委派模型

37. 类加载器 - 图6

6. ClassLoader

注意默认是项目的第一层src

  • getSystemClassLoader() : 获取系统类加载器 返回值为ClassLoader

    • getResourceAsStream(String name): 利用加载器去加载一个指定的文件 参数为路径 返回为字节流