У меня сумасшедший вопрос о 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:, говоря, что значение локальной переменной, возможно, не было инициализировано.