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