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);
}
}
Je sais qu'un static
bloc exécuté lors du chargement de la classe. Mais dans ce cas, la variable d'instance à l'intérieur de la classe Mno
est final
, à cause de cela, le static
bloc ne s'exécute pas.
Pourquoi est-ce si? Et si je supprimais le final
, cela fonctionnerait-il bien?
Quelle mémoire sera allouée en premier, la static final
variable ou le static
bloc?
Si, en raison du final
modificateur d'accès, la classe n'est pas chargée, comment la variable peut-elle obtenir de la mémoire?