JAVA中的类加载

时间:2016-06-05 12:12:26

标签: java class loader

Class-Loader搜索和加载类的顺序是:

  1. Bootstrap类加载器
  2. Extension Class Loader
  3. 应用类加载器
  4. 现在,如果我使用构造函数创建用户定义的String类。

    class String {
        public String(){
            System.out.println("This is user defined String Class");
        }
    }
    

    然后执行以下代码:

    public class Checking {
        public static void main(java.lang.String[] args){
            String s= new String();
        }
    }
    

    上述代码的输出是 "这是用户定义的字符串类"

    这意味着加载了用户定义的类,它由Application Class-Loader

    加载

    所以,我的问题是如果首先加载bootstrap,为什么我得到那个输出? 我希望我的问题很明确。

1 个答案:

答案 0 :(得分:1)

添加行

package java.lang

在您的代码之上,然后再次检查。你会发现你现在得到了预期的结果。

原因是,类名始终仅用作完全限定名,包括包名和类名。因此,在您的情况下,Stringjava.lang.String不同,因此无法在rt.jar中找到