Tôi có một chương trình như thế này:
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();
}
}
Nếu tôi cố gắng thực thi nó, tôi gặp lỗi trình biên dịch như: variable x might not have been initialized
dựa trên các giá trị mặc định của java, tôi sẽ nhận được đầu ra bên dưới phải không ??
"Here x is 0".
Các biến cuối cùng có giá trị mặc định không?
nếu tôi thay đổi mã của mình như thế này,
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();
}
}
Tôi nhận được đầu ra là:
Here x is 0
Here x is 7
const called
Bất cứ ai có thể vui lòng giải thích hành vi này ..