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);
}
}
Eu sei que um staticbloco é executado quando a classe é carregada. Mas, neste caso, a variável de instância dentro da classe Mnoé final, por isso o staticbloco não está executando.
Por que? E se eu removesse o final, funcionaria bem?
Qual memória será alocada primeiro, a static finalvariável ou o staticbloco?
Se devido ao finalmodificador de acesso a classe não for carregada, então como a variável pode obter memória?