class Test {
public static void main(String arg[]) {
System.out.println("**MAIN METHOD");
System.out.println(Mno.VAL); // SOP(9090);
System.out.println(Mno.VAL + 100); // SOP(9190);
}
}
class Mno {
final static int VAL = 9090;
static {
System.out.println("**STATIC BLOCK OF Mno\t: " + VAL);
}
}
static
クラスがロードされたときにブロックが実行されたことを知っています。ただし、この場合、クラス内のインスタンス変数Mno
はです。final
そのため、static
ブロックは実行されていません。
どうしてこんなことに?そして、私が削除した場合、それはうまくいきfinal
ますか?
static final
変数とstatic
ブロックのどちらのメモリが最初に割り当てられますか?
アクセス修飾子が原因final
でクラスがロードされない場合、変数はどのようにしてメモリを取得できますか?