Blok statyczny w Javie nie został wykonany
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 astatic
blok wykonywany po załadowaniu klasy. Ale w tym przypadku zmienna instancji wewnątrz klasyMno
jestfinal
, z tego powodustatic
blok nie jest wykonywany.
Dlaczego to jest takie? A jeśli usunęfinal
, czy to zadziała?
Która pamięć zostanie przydzielona jako pierwsza,static final
zmienna lubstatic
blok?
Jeśli z powodufinal
modyfikator dostępu klasa nie ładuje się, to jak zmienna może uzyskać pamięć?