Ich habe ein Programm wie dieses:
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();
}
}
Wenn ich versuche, es auszuführen, erhalte ich einen Compilerfehler wie variable x might not have been initialized
folgt : Basierend auf Java-Standardwerten sollte ich die folgende Ausgabe richtig machen?
"Here x is 0".
Werden endgültige Variablen Standardwerte haben?
Wenn ich meinen Code so ändere,
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();
}
}
Ich erhalte folgende Ausgabe:
Here x is 0
Here x is 7
const called
Kann jemand bitte dieses Verhalten erklären ..