Статический блок в Java не выполнен
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);
}
}
Я знаю чтоstatic
блок выполняется при загрузке класса. Но в этом случае переменная экземпляра внутри классаMno
являетсяfinal
из-за этогоstatic
блок не выполняется.
Почему это так? И если бы я удалилfinal
это будет работать нормально?
Какая память будет выделена первой,static final
переменная илиstatic
блок?
Если из-заfinal
модификатор доступа класс не загружается, тогда как переменная может получить память?