/** * @author created by qwb on 2018/10/6 15:19 */ public class test { public static void main(String[] args) { Singleton singleton = Singleton.getInstance(); System.out.println("Singleton1 value1: "+ singleton.value1); System.out.println("Singleton1: "+singleton.value2);
/** 大专栏 JVM-1> * @author created by qwb on 2018/10/6 15:50 */ public class TestClass { public static void main(String[] args) { Student s1 = new Student(); Student s2 = new Student(); Class c1 = s1.getClass(); Class c2 = s2.getClass(); System.out.println(c1.getName()); System.out.println(c1==c2); Method[] m = c1.getDeclaredMethods(); for (Method method:m){ System.out.println(method.getName()); }
Field[] f = c1.getDeclaredFields(); for (Field field:f){ System.out.println(field.getName()); } } } class Student{ private String name;
public String getName() { return name; } public void setName(String name) { this.name = name; } public int getRoll_No() { return roll_No; } public void setRoll_No(int roll_No) { this.roll_No = roll_No; } private int roll_No; } /** com.heima.jvm.Student true //注意: 对于每一个 .class 文件只生成一个 Class 对象 getName setName setRoll_No getRoll_No name roll_No */
它是启动类加载器的子类,它加载位于 JAVA_HOME/jre/lib/ext 扩展路径下或者由 java.ext.dirs 所指定的目录路径,它是由 sun.misc.Launcher$ExtClassLoader class 用 java 语言编写的。
应用类加载器 (application class loader)
它是扩展类加载器的子类,它负责加载应用程序类路径下的类,通过使用环境变量映射到 java 类路径,它是由 sun.misc.Launcher$ExtClassLoader class 用 java 语言编写的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
package com.heima.jvm;
/** * @author created by qwb on 2018/10/6 16:00 */ public class TestClassloader { public static void main(String[] args) { // String class is loaded by bootstrap loader, and // bootstrap loader is not Java object, hence null System.out.println(String.class.getClassLoader()); // Test class is loaded by Application loader System.out.println(TestClassloader.class.getClassLoader()); } } /** * null sun.misc.Launcher$AppClassLoader@18b4aac2 * */