У меня есть сумасшедший вопрос о Java-переключателях
int key = 2;
switch (key) {
case 1:
int value = 1;
break;
case 2:
value = 2;
System.out.println(value);
break;
default:
break;
}
Сценарий 1 — Когда ключ равен двум, он успешно печатает значение как 2.
Сценарий 2. Когда я собираюсь прокомментировать значение = 2
в случае 2:
он кричит, говоря Значение локальной переменной, возможно, не было инициализировано.
Вопросы:
Сценарий 1: если поток выполнения не переходит к case 1:
(когда ключ = 2
), то как он узнает тип переменной значения как интервал
?
Сценарий 2: если компилятор знает тип переменной значения как int
, то он должен получить доступ к выражению int value = 1;
в case 1 :
.(Декларация и инициализация). Тогда почему это скворк Когда я собираюсь прокомментировать value = 2
в case 2:
, говоря Значение локальной переменной, возможно, не было инициализировано.