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