Haben Java Final-Variablen Standardwerte?
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 Compiler-Fehler als:variable x might not have been initialized
basierend auf Java-Standardwerten sollte ich die folgende Ausgabe richtig bekommen?
"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 die Ausgabe als:
Here x is 0
Here x is 7
const called
Kann mir jemand bitte dieses Verhalten erklären ..