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);
}
}
Sé que un staticbloque se ejecuta cuando se carga la clase. Pero en este caso, la variable de instancia dentro de la clase Mnoes final, debido a que el staticbloque no se está ejecutando.
¿Por qué es así? Y si quito el final, ¿funcionaría bien?
¿Qué memoria se asignará primero, la static finalvariable o el staticbloque?
Si debido al finalmodificador de acceso la clase no se carga, ¿cómo puede la variable obtener memoria?