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);
}
}
So che un static
blocco viene eseguito quando viene caricata la classe. Ma in questo caso la variabile di istanza all'interno della classe Mno
è final
, per questo motivo il static
blocco non è in esecuzione.
Perchè è così? E se dovessi rimuovere il final
, funzionerebbe bene?
Quale memoria verrà allocata per prima, la static final
variabile o il static
blocco?
Se a causa del final
modificatore di accesso la classe non viene caricata, come può la variabile ottenere memoria?