分析下面代码的运行结果,并给出具体的原因。
public class ClassB {
public static void main(String[] args) throws Exception {
ClassLoader loader=ClassLoader.getSystemClassLoader();
Class objClass=loader.loadClass("ClassA");
System.out.println("after load ClassA");
System.out.println("before init ClassA");
objClass=Class.forName("ClassA");
}
}
class ClassA{
static{
System.out.println("now init ClassA");
}
}
问题分析:调用ClassLoader类的loadClass()方法加载一个类,并不是对这个类的主动使用,所以不会对这个类进行初始化工作。上面程序中,先使用系统类加载器加载ClassA,尽管ClassA被加载器加载了,但是Java虚拟机并没有对其进行初始化工作。当程序使用Class类的forName("ClassA")方法显示初始化ClassA时,才是对ClassA的主动使用,这将导致ClassA被初始化,所以它的静态代码段被执行。因此,程序运行的结果应该是:
after load ClassA
before init ClassA
now init ClassA
分享到:
相关推荐
java 面试java 面试java 面试java 面试java 面试
java面试问题集锦
JAVA面试问题,自己和别人总结JAVA面试问题,自己和别人总结
JAVA面试资料JAVA面试资料 JAVA面试资料 JAVA面试资料 JAVA面试资料 JAVA面试资料 JAVA面试资料 JAVA面试资料 JAVA面试资料 JAVA面试资料 JAVA面试资料 JAVA面试资料 JAVA面试资料 JAVA面试资料 JAVA面试资料 JAVA...
这份资源是一份包含1000+道Java面试题的整理版,旨在帮助广大Java开发者更好地准备面试,提升面试成功率。内容涵盖了Java的基础知识、高级特性、常见问题等多个方面,每个问题都附带了详细的答案解析,有助于读者...
JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题...
java面试问题小集 收集了一些面试题目
常见Java面试问题,里面涵盖了基础的Java面试问题,有助于准备面试
java面试题集合java面试题集合java面试题集合java面试题集合java面试题集合java面试题集合
java对日外包面试题
java面试题目java面试题目java面试题目java面试题目java面试题目java面试题目
java面试宝典2017版,各种java面试题汇总 java面试宝典2017版,各种java面试题汇总 java面试宝典2017版,各种java面试题汇总
日本公司java面试问题集。非常实用。适用于日企、软件外包、赴日软件开发。(日文)
java面试宝典2018版java面试宝典2018版java面试宝典2018版java面试宝典2018版
java面试问题大全,帮您成功!!!!!!!!!!!!
Java面试题