我想我不明白開關櫃的範圍是如何工作的。開關櫃中的變量範圍
有人可以向我解釋爲什麼第一個代碼不能編譯,但第二個代碼沒有?
代碼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