Mam szalone pytanie dotyczące przełączników Java.
int key = 2;
switch (key) {
case 1:
int value = 1;
break;
case 2:
value = 2;
System.out.println(value);
break;
default:
break;
}
Scenariusz 1 - gdy key
jest dwa, pomyślnie drukuje wartość jako 2.
Scenariusz 2 - Kiedy mam zamiar skomentować value = 2
w case 2:
nim, wrzeszczy, mówiąc, że wartość zmiennej lokalnej mogła nie zostać zainicjowana .
Pytania:
Scenariusz 1: Jeśli przepływ wykonania nie przejdzie do case 1:
(kiedy key = 2
), to skąd będzie wiedzieć, jaki typ zmiennej wartości int
?
Scenariusz 2: Jeśli kompilator zna typ zmiennej wartości jako int
, to musi mieć dostęp do int value = 1;
wyrażenia w case 1:
. (Deklaracja i inicjalizacja). Więc dlaczego to robi sqawrk Kiedy mam zamiar wypowiedzieć value = 2
się case 2:
, mówiąc lokalną wartość zmiennej nie została zainicjowana .