p10-p17内容
1: 类的初始化
1 package Reflection; 2 3 import java.sql.Struct; 4 5 /** 6 * author liulei 7 * data 5.22 8 * since 1.8 9 * version 1.0 10 * Description 类的初始化 11 */ 12 public class Test04 { 13 public static void main(String[] args) throws ClassNotFoundException { 14 //1主动引用 15 Son s = new Son();//new 一个实例 16 Class.forName("Reflection.Son");//反射会主动引用 17 //2 不会产生引用 18 System.out.println(Son.b);//子类引用父类的方法 19 Son[] s1 = new Son[5];//通过数组定义类引用 20 } 21 } 22 class Father{ 23 static int b = 2; 24 static { 25 System.out.println("父类被加载"); 26 } 27 } 28 class Son extends Father{ 29 static { 30 System.out.println("子类被加载"); 31 } 32 static int m = 100; 33 static final int n = 1; 34 }
2:类加载器的作用
1 package Reflection; 2 3 /** 4 * author liulei 5 * data 5.22 6 * since 1.8 7 * version 1.0 8 * Description 三种类加载器 9 */ 10 public class Test5 { 11 12 //双亲委派机制:java.lang.String-->,多重检测,当自己写的类和跟类(rt.jar)相同时,自己写的类无效 13 public static void main(String[] args) throws ClassNotFoundException { 14 ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();//系统类加载器 15 System.out.println(systemClassLoader);//sun.misc.Launcher$AppClassLoader@18b4aac2 16 ClassLoader parent = systemClassLoader.getParent();//扩展类加载器(是系统类加器的子集或父亲) 17 System.out.println(parent);//sun.misc.Launcher$ExtClassLoader@1b6d3586 18 ClassLoader parent1 = parent.getParent();//跟加载器(扩展类加载器的子集或父亲) 19 System.out.println(parent1);//null,因为不可访问所以为null 20 //测试当前类是那个加载器加载的 21 ClassLoader classLoader = Class.forName("Reflection.Test5").getClassLoader();//sun.misc.Launcher$AppClassLoader@18b4aac2 22 System.out.println(classLoader); 23 //获取jdk内置的类是谁加载的 24 ClassLoader classLoader1 = Class.forName("java.lang.Object").getClassLoader(); 25 System.out.println(classLoader1);//null 26 //如何获得系统类加载器可以加载的路径 27 System.out.println(System.getProperty("java.class.path")); 28 /* 29 D:\Eclipse\JDK\jre\lib\charsets.jar; 30 D:\Eclipse\JDK\jre\lib\deploy.jar; 31 D:\Eclipse\JDK\jre\lib\ext\access-bridge-64.jar; 32 D:\Eclipse\JDK\jre\lib\ext\cldrdata.jar; 33 D:\Eclipse\JDK\jre\lib\ext\dnsns.jar; 34 D:\Eclipse\JDK\jre\lib\ext\jaccess.jar; 35 D:\Eclipse\JDK\jre\lib\ext\jfxrt.jar; 36 D:\Eclipse\JDK\jre\lib\ext\localedata.jar; 37 D:\Eclipse\JDK\jre\lib\ext\nashorn.jar; 38 D:\Eclipse\JDK\jre\lib\ext\sunec.jar; 39 D:\Eclipse\JDK\jre\lib\ext\sunjce_provider.jar; 40 D:\Eclipse\JDK\jre\lib\ext\sunmscapi.jar; 41 D:\Eclipse\JDK\jre\lib\ext\sunpkcs11.jar; 42 D:\Eclipse\JDK\jre\lib\ext\zipfs.jar; 43 D:\Eclipse\JDK\jre\lib\javaws.jar; 44 D:\Eclipse\JDK\jre\lib\jce.jar; 45 D:\Eclipse\JDK\jre\lib\jfr.jar; 46 D:\Eclipse\JDK\jre\lib\jfxswt.jar; 47 D:\Eclipse\JDK\jre\lib\jsse.jar; 48 D:\Eclipse\JDK\jre\lib\management-agent.jar; 49 D:\Eclipse\JDK\jre\lib\plugin.jar; 50 D:\Eclipse\JDK\jre\lib\resources.jar; 51 D:\Eclipse\JDK\jre\lib\rt.jar; //java核心库 52 D:\Code\IDEA\Stage01\Demo03\out\production\Demo03;//自己的目录 53 D:\IDEA\IntelliJ IDEA Community Edition 2020.1.1\lib\idea_rt.jar 54 55 */ 56 } 57 }