类加载器就是加载类的工具,java虚拟机中可以安装多个类加载器,系统默认主要有三个类加载器,每个类加载器负责加载特定位置的类:BooStrap(加载jre/lib/rt.jar)、ExtClassLoader(加载jre/lib/ext/*.jar)、AppClassLoader(加载ClassPath目录下的类)。类加载器也是java类,因为其他是java类的类加载器本身也要被类加载器加载,显然必须有第一个类加载器不是java类,这正是BootStrap。
类加载器的委托机制
当java虚拟机要加载一个类时,到底派出哪个类加载器去加载?
首先当前线程的类加载器去加载线程中的第一个类
如果类A中引用了类B,java虚拟机将使用加载类A的类加载器来加载类B
还可以直接调用ClassLoader.loadClass()方法来指定某个类加载器去加载某个类
每个类加载器加载类时,又先委托给上级类加载器