Class 正在加载 JAVA

Class Loading in JAVA

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

  1. Bootstrap Class 装载机
  2. 扩展程序Class加载程序
  3. 应用程序Class加载程序

现在,如果我使用构造函数创建用户定义的字符串 class。

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();
    }
}

以上代码的输出是 "This is user defined String Class"

表示加载了user defined class,由Application Class-Loader

加载

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

添加行

package java.lang

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

原因是,class 名称始终仅用作完全限定名称,它由包名称和 class 名称组成。因此,在您的情况下,Stringjava.lang.String 不同 class,因此不会在 rt.jar

中找到