类的加载过程
当程序主动使用某个类的时候,如果该类还没有被加载到内存中,则系统会通过如下步骤对类进行初始化。
ClassLoader
类加载器是用来把类(class)装载进内存的。JVM规范定义了两种规范的类加载器:启动类加载器(bootstrap)和用户自定义加载器(user-defined class loader)。JVM在运行时会产生3个类加载器组成的初始化加载器层次结构。如下:
/** * 关于类的加载器 */ @Test public void test5() throws IOException { //获取一个系统类加载器 ClassLoader loader1 = ClassLoader.getSystemClassLoader(); System.out.println(loader1); //获取系统类加载器的父类加载器,即扩展类加载器 ClassLoader loader2 = loader1.getParent(); System.out.println(loader2); //获取扩展类加载器的父类加载器 ClassLoader loader3 = loader2.getParent(); System.out.println(loader3); Class clazz = Person.class; ClassLoader loader4 = clazz.getClassLoader(); System.out.println(loader4); //掌握如下,类加载器的主要方法: ClassLoader loader = this.getClass().getClassLoader(); //获取类路径下指定文件的输出流 InputStream is = loader.getResourceAsStream("Progress/reflection/jdbc.properties"); Properties pro = new Properties(); pro.load(is); String name = pro.getProperty("jdbc.username"); System.out.println("jdbc.name = "+name); String password = pro.getProperty("jdbc.password"); System.out.println("jdbc.password = "+password); }