类的加载过程:
1、加载到内存中,会产生一个class对象;
2、链接,链接结束后,对象中的参数为默认值;
3、对象中的参数初始化;
测试实例:
package com.keji.oop;
public class ClassLoaderTest {
public static void main(String[] args) throws ClassNotFoundException {
//获得系统类加载器
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
System.out.println(systemClassLoader+"系统类加载器");
//获得系统类加器的父类加载器->扩展类加载器
ClassLoader parent = systemClassLoader.getParent();
System.out.println(parent+"扩展类加载器");
//获得扩展类加器的父类加载器->根加载器(c/c++)无法直接获取
ClassLoader grandparent = parent.getParent();
System.out.println(grandparent+"根加载器");
//测试当前类属于哪个加载器
ClassLoader classLoader = Class.forName("com.keji.oop.ClassLoaderTest").getClassLoader();
System.out.println(classLoader);
//测试JDK内置的类是谁加载的
classLoader = Class.forName("java.lang.Object").getClassLoader();
System.out.println(classLoader);
}
}
测试结果: