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 keyjest dwa, pomyślnie drukuje wartość jako 2.
Scenariusz 2 - Kiedy mam zamiar skomentować value = 2w 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 = 2się case 2:, mówiąc lokalną wartość zmiennej nie została zainicjowana .