JVM-2-loadClass(*)与Class.forName(*)

来源:互联网 发布:可以免费发广告软件 编辑:程序博客网 时间:2024/06/05 15:00

一、主要内容

loadClass(*)不会导致类初始化,只是类被加载

Class.forName(*)才会导致类被初始化

二、代码

package jvm.demo1;public class Test3 {public static void main(String[] args) throws ClassNotFoundException {ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();Class<?> clazz2 = systemClassLoader.loadClass("jvm.demo1.T");System.out.println("clazz2: " + clazz2);ClassLoader classLoader2 = clazz2.getClassLoader();System.out.println("classLoader2: " + classLoader2);System.out.println("--------------------------");Class<?> clazz = Class.forName("jvm.demo1.T"); // T类会被初始化System.out.println("clazz: " + clazz);ClassLoader classLoader = clazz.getClassLoader();System.out.println("classLoader: " + classLoader);}}class T {static {System.out.println("打印这句话,说明T类被初始化了...");}}
程序输出


0 0