J'ai un programme comme celui-ci :
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();
}
}
Si j'essaie de l'exécuter, j'obtiens une erreur de compilation comme : variable x might not have been initialized
En se basant sur les valeurs par défaut de Java, je devrais obtenir le résultat ci-dessous, n'est-ce pas ?
"Here x is 0".
Les variables finales auront-elles des valeurs par défaut ?
si je change mon code comme ceci,
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();
}
}
J'obtiens le résultat suivant :
Here x is 0
Here x is 7
const called
Quelqu'un peut-il expliquer ce comportement..