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);
}
}
Wiem, że static
blok wykonywany po załadowaniu klasy. Ale w tym przypadku zmienną instancji wewnątrz klasy Mno
jest final
, ponieważ static
blok nie jest wykonywany.
Dlaczego to jest takie? A gdybym usunął final
, czy to zadziała?
Która pamięć zostanie przydzielona jako pierwsza, static final
zmienna czy static
blok?
Jeśli z powodu final
modyfikatora dostępu klasa nie jest ładowana, to w jaki sposób zmienna może uzyskać pamięć?