java的类加载器有哪些,它们的顺序是什么?

解决方案 »

  1.   

    1、根加载器 --C++写的 ,看不到源码
    2、扩展加载器
    3、系统(应用)加载器
    4、自定义加载器(必须继承ClassLoader)根加载器的 父加载器 一般为null
    扩展加载器的父加载器为 跟加载器
    系统(应用)加载器的父加载器 为扩展加载器
    自定义的加载器 根据自己的定义了
      

  2.   

    1、根类加载器(Bootstrap) --C++写的 ,看不到源码
    2、扩展类加载器(Extension) --加载位置 :jre\lib\ext中
    3、系统(应用)类加载器(System\App)  --加载位置 :classpath中
    4、自定义加载器(必须继承ClassLoader)java的类加载器 ,采用父委托机制
      

  3.   

    根类加载器(Bootstrap) --加载 系统类的 比如 java.lang.* ;
    扩展类加载器(Extension)
    系统类加载器  --加载相关应用的,即你的程序一般都是系统类加载器加载自定义加载器  --那就是你自己的想做事情,所以自己写了
      

  4.   

    加载器主要是加载某个URL位置(可以是文件系统,也可以是FTP站点和Web站点)的Class文件、图片等资源到JVM内存。
      

  5.   

    启动类加载器:
       负责加载$JAVA_HOME/jre/lib/下核心API或者-Xbootclasspath选项指定的jar包,因为核心Java API的class文件是用于启动Java虚拟机的class文件,所以启动类加载器的名字因此而得.扩展类加载器:
       负责加载$JAVA_HOME/jre/lib/ext/*.jar或者-Djava.ext.dirs 指定目录下的jar包,一般都是加载扩展的api系统类加载器:
       负责加载classpath中的类,也可以通过-classpath选项进行指定用户自定义类加载器:
       可以根据用户的需要定制自己的类加载过程,在运行期进行指定类的动态实时加载。创建用户自定义的类加载器,其中一个重要原因就是能够以定制的方式把类型的全限定名转换成一个Java class文件格式的字节数组。
      

  6.   

    Class.forName() ;
    类.class  
    对象.getClass()
      

  7.   

    前面的回答已经差不多了。类加载机制是为了保障jvm的安全,先去父类找,父类没有才去子类找,这样就避免了系统自身的方法不被覆盖。如果你试图写一个lang的类去覆盖java.lang,因为类的加载机制,所以不可能成功。