Mam szalone pytanie dotyczące przełączników Java.Deklarowanie i inicjowanie zmiennych w przełącznikach 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 - Kiedy key
jest dwa powodzeniem drukować wartość jako 2.
Scenariusz 2 - Kiedy idę do komentowania value = 2
w case 2:
to squawks mówiąc Lokalna wartość zmiennej nie może mieć został zainicjowany.
Pytania:
Scenariusz 1: Jeśli przepływ wykonanie nie iść do case 1:
(gdy key = 2
), a następnie, jak to poznać typ zmiennej wartości jako int
?
Scenariusz 2: Jeśli kompilator zna typ zmiennej wartości jako int
, musi mieć dostęp do wyrażenia int value = 1;
w . (Deklaracja i inicjalizacja). Więc dlaczego to sqawrk Kiedy mam zamiar skomentować value = 2
w case 2:
, mówiąc: Wartość zmiennej lokalnej może nie zostać zainicjowana.
To nie jest szalone pytanie, to bardzo dobre pytanie. – biziclop
Możliwy duplikat zakresu [Zakres zmiennej w przypadku przełącznika] (http://stackoverflow.com/questions/3894119/variables-scope-in-a-switch-case) –
@PhilippeCarriere Właściwie, myślę, że powinien być odwrotnie - odpowiedź tutaj jest lepsza (nawet jeśli post jest nowszy), ponieważ istnieje bezpośrednie odniesienie do JLS i dobrze podsumowuje problem, który obejmuje różne odpowiedzi w tym poście. [Zobacz także] (http://meta.stackoverflow.com/questions/251938/should-i-flag-a-question-as-duplicate-if-it-has-received-better-answers). – Tunaki