我想我不明白开关柜的范围是如何工作的。开关柜中的变量范围
有人可以向我解释为什么第一个代码不能编译,但第二个代码没有?
代码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”从未宣布的声明...
听这家伙。他是对的。 – John 2010-10-09 02:26:19
正确。但是我会对我的团队中使用这个“语法”的程序员非常恼火,而没有很好的理由。这是一个混乱和错误的秘诀。它在视觉上隐藏了第一个case块(如果它不是'return'),即使在右大括号之后“仍然继续”的事实,并有助于忘记'break'。 – leonbloy 2011-05-18 18:16:43
另外:使用'break'来维护和防止错误!即使不需要。 – worenga 2014-11-28 19:26:14