Ho una domanda pazza sugli switch Java.
int key = 2;
switch (key) {
case 1:
int value = 1;
break;
case 2:
value = 2;
System.out.println(value);
break;
default:
break;
}
Scenario 1 - Quando il key
è due esso stampa con successo il valore come 2.
Scenario 2 - Quando ho intenzione di commentare value = 2
in case 2:
esso squawks dicendo che la Il valore della variabile locale non sia stato inizializzato .
Domande:
Scenario 1: se il flusso di esecuzione non va a case 1:
(quando il key = 2
), come fa a conoscere il tipo di variabile di valore come int
?
Scenario 2: se il compilatore conosce il tipo di variabile del valore come int
, deve aver eseguito l'accesso int value = 1;
all'espressione in case 1:
. (Dichiarazione e inizializzazione). E allora perché lo fa sqawrk Quando ho intenzione di commentare value = 2
in case 2:
, dicendo che il Il valore della variabile locale non può essere stato inizializzato .