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 blocco static
viene eseguito quando la classe è stata caricata. Ma in questo caso la variabile di istanza all'interno della classe Mno
è final
, a causa di ciò il blocco static
non è in esecuzione.Blocco statico in Java non eseguito
Perché è così? E se dovessi rimuovere lo final
, funzionerebbe correttamente?
Quale memoria verrà allocata per prima, la variabile static final
o il blocco static
?
Se, a causa del modificatore di accesso final
, la classe non viene caricata, come può la variabile recuperare la memoria?
Qual è l'errore esatto e il messaggio che si ottiene? – Patashu
@Patashu, non ci sono errori, è un dubbio – Sthita