Область действия переменной в случае переключателя [дубликат]

На этот вопрос уже есть ответ здесь:

Объявление и инициализация переменных в переключателях Java 5 ответов

Я думаю, что я не понимаю, как работает прицел в корпусе коммутатора.

Может кто-нибудь объяснить мне, почему первый код не компилируется, а второй -?

Код 1:

 int key = 2;
 switch (key) {
 case 1:
      String str = "1";
      return str;
 case 2:
      String str = "2"; // duplicate declaration of "str" according to Eclipse.
      return str;
 }

Код 2:

 int key = 2;
 if (key == 1) {
      String str = "1";
      return str;
 } else if (key == 2) {
      String str = "2";
      return str;
 }

Почему область действия переменной "str" ​​не содержится в случае 1?

Если я пропущу объявление случая 1, переменная "str" ​​никогда не будет объявлена ​​...

Ответы на вопрос(6)

Ваш ответ на вопрос