静的ブロックは何よりも先に実行されることを知っています。しかし、ここで、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