Ich habe eine verrückte Frage zu Java-Switches.
int key = 2;
switch (key) {
case 1:
int value = 1;
break;
case 2:
value = 2;
System.out.println(value);
break;
default:
break;
}
Szenario 1 - Wenn die key
beiden ist es erfolgreich den Wert als 2. drucken
Szenario 2 - Wenn ich Kommentar werde value = 2
in case 2:
es die kreischt sagen Die lokale Variable Wert nicht initialisiert worden sein .
Fragen:
Szenario 1: Wenn der Ausführungsfluss nicht zu case 1:
(wann key = 2
) wechselt, woher kennt er dann den Typ der Wertvariablen als int
?
Szenario 2: Wenn der Compiler den Typ der Wertvariablen als kennt int
, muss er auf den int value = 1;
Ausdruck in zugegriffen haben case 1:
(Deklaration und Initialisierung). Warum tut es sqawrk Wenn ich werde Kommentar value = 2
in case 2:
die sagen , die lokale Variable Wert kann nicht initialisiert wurden .