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 класс не загружается, то как переменная может получить память?