本帖最后由 伍叶竹 于 2014-4-27 23:34 编辑
好复杂的题,捣鼓了好久一点想法:装载Test1.class,静态变量在类编译时全部初始化,非静态变量仅在实例化时才初始化
.执行:public static Test1 t1=new Test1("t1"); 在调用构造函数之前对实例成员初始化,
即先public int j=print("j");调用到print 打印: 1:j i=0 n=0
然后执行实例代码块,即print("构造块"),
最后调用构造函数Test1("t1");分别打印:2:构造块 i=1 n=1
3:t1 i=2 n=2
打印结果的4-6行是 Test1 t2=new Test1("t2");执行的结果。 同上。
然后是: public static int i=print("i"); 打印:7:i i=6 n=6
然后是静态块:static{ print("静态块"); } 打印:8:静态块 i=7 n=99
最后9-11是主函数中的语句了 和1、2、3行打印一个道理。不过要注意此时n的值。
断网前最后的挣扎。 我只能帮你到这儿了。{:3_64:}
|