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