首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

调研类加载器的面试题

2012-12-25 
考察类加载器的面试题这道题目主要考察对类加载概念的认识,如果你认识ClassLoader加载类的三步骤的话,这题

考察类加载器的面试题
这道题目主要考察对类加载概念的认识,如果你认识ClassLoader加载类的三步骤的话,这题应该不是很难。

类加载器加载一个类的三个步骤:
(1) 加载:查找并加载类的二进制数据。
(2) 连接:包括验证、准备和解析类的二进制数据。
    1 验证:确保被加载类的二进制数据。
    2 准备:为类的静态变量分配内存,并将其初始化为默认值。
    3 解析:把类中的符号引用转换为直接引用。
(3) 把类的静态变量赋予正确的初始值。
类加载器的学问太大了,在这里就不多介绍了。

看一下下面两段代码分别输出什么?

//code_1public class SingleInstance {private static SingleInstance si = new SingleInstance();//注意这里public static int num_1;public static int num_2 = 0;public SingleInstance() {num_1 ++;num_2 ++;}public static SingleInstance getInstance() {return si;}public void print() {System.out.println(num_1 + ":" + num_2);}public static void main(String[] args) {SingleInstance.getInstance().print();}}//code_2public class SingleInstance {public static int num_1;public static int num_2 = 0;private static SingleInstance si = new SingleInstance();//注意,跟上面不一样了public SingleInstance() {num_1 ++;num_2 ++;}public static SingleInstance getInstance() {return si;}public void print() {System.out.println(num_1 + ":" + num_2);}public static void main(String[] args) {SingleInstance.getInstance().print();}}


答案(答案经过两次Base64的编码):
     code_1 : TVRvdw==
     code_2 : TVRveA==

热点排行