我知道静态块在任何事情之前运行。但是在这里,当 B.test() 被调用时会发生什么?执行顺序和值设置?后来,当 b1 设置为 null 时,仍然 b1.i 如何计算为 20?
class B
{
static int i;
static {
i = 20;
System.out.println("SIB");
}
static int test() {
int i = 24;
System.out.println(i);
return i;
}
}
public class Manager {
public static void main(String[] arg) {
B.test();
B b1 = null;
System.out.println(b1.i);
}
}
输出是:
SIB
24
20