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