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