java.lang.String的ClassLoader名称为null

The*_*ind -1 java classloader

class Test {

}

public class NewClass {
    public static void main(String[] args) throws ClassNotFoundException {
        Test t = new Test();
        String s = new String("abc");
        Integer i = new Integer(1000);
        System.out.println(Class.forName("Test").getClassLoader());
        System.out.println(t.getClass().getClassLoader());
        System.out.println(NewClass.class.getClassLoader());
        System.out.println(java.lang.String.class.getClassLoader());
        System.out.println(java.lang.Integer.class.getClassLoader());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

sun.misc.Launcher$AppClassLoader@546b97fd
sun.misc.Launcher$AppClassLoader@546b97fd
sun.misc.Launcher$AppClassLoader@546b97fd
null
null
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,为什么String和Integer的类加载器为null?

Not*_*bug 6

来自getClassLoader()的JavaDoc

返回类的类加载器.某些实现可能使用null来表示引导类加载器.如果此类由引导类加载器加载,则此方法将在此类实现中返回null.

Bootstrap类加载器负责加载Java API中定义的类.StringInteger类被Bootstrap类加载器加载.