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