У меня есть такая программа:
class Test {
final int x;
{
printX();
}
Test() {
System.out.println("const called");
}
void printX() {
System.out.println("Here x is " + x);
}
public static void main(String[] args) {
Test t = new Test();
}
}
Если я попытаюсь выполнить его, я получаю ошибку компилятора как: variable x might not have been initialized
на основе значений по умолчанию java. Я должен получить правильный результат ниже.
"Here x is 0".
Будут ли конечные переменные иметь значения dafault?
если я изменю свой код следующим образом:
class Test {
final int x;
{
printX();
x = 7;
printX();
}
Test() {
System.out.println("const called");
}
void printX() {
System.out.println("Here x is " + x);
}
public static void main(String[] args) {
Test t = new Test();
}
}
Я получаю вывод как:
Here x is 0
Here x is 7
const called
Может кто-нибудь объяснить это поведение..