package com.alibaba;
public class Test1 {
public static int k = 0;
public static Test1 t1 = new Test1("t1");
public static Test1 t2 = new Test1("t2");
public static int i = print("i");
public static int n = 99;
public int j = print("j");
{
print("构造块");
}
static {
print("静态块");
}
public Test1(String str) {
System.out
.println((++k) + ":" + str + " i=" + i + " n=" + n);
++i;
++n;
}
public static int print(String str) {
System.out
.println((++k) + ":" + str + " i=" + i + " n=" + n);
++n;
return ++i;
}
public static void main(String ...strings) {
Test1 t = new Test1("init");
}
}
说实在的,我刚开始看到这道题的时候,觉得应该没问题,之前看过很多类似的考察jvm执行顺序的题,认为基本上也差不多就那样,没什么难度,可是。。。可是。。。当我仔细看完这道题的时候,我凌乱了。。。瞬间石化的赶脚啊!
回学校之后,赶紧打开eclipse,将代码敲了一边(我偷偷的抄下来了),跑了一遍,赶脚还是不是很能理解啊。。。
结果竟然是:
得出的结论:同志仍需努力!!!