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