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 staticblocco 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 staticblocco non è in esecuzione.
Perchè è così? E se dovessi rimuovere il final, funzionerebbe bene?
Quale memoria verrà allocata per prima, la static finalvariabile o il staticblocco?
Se a causa del finalmodificatore di accesso la classe non viene caricata, come può la variabile ottenere memoria?