Java的类加载器分为四级:
启动类加载器:这个是最基础的,加载的是系统类,例如java.lang.Object类
扩展类加载器:加载的是jre或者lib中的类
应用类加载器:加载的是类路径下的类,就是自己写的那些类
自定义的加载器:用户自定义的
类加载器采用双亲委托机制,是一种单向的委托机制,首先判断是否已经加载,若无,由父类加载器进行加载,还是没有的话,就由当前类加载器进行加载,这样做可以保护系统类的安全性,例如,在自己的包中写一个String类,那么系统最新加载的java.lang.String,而不是自己写的,否则会造成JVM加载类的时候产生混淆,最终导致程序崩溃
不同的类加载器,即使加载的是同一个类,在JVM中也会被当成两个来看待
可以通过继承ClassLoader来自定义自己的类加载器,这样可以动态的对类进行修改
也可以通过URLClassLoader类来指定类加载路径,这样可以弥补静态加载的不足,实现在程序运行时进行类加载
