是的。開關會中斷語言塊語句模式,但這主要是因爲Java使用的switch語句所基於的C/C++。
在所有三種語言,switch語句採用以下形式:
switch(variable) {
case n:
statement 1;
statement n;
(optional) break;
case n+1:
statement 1;
statement n;
(optional) break;
// Optionally more statements
(optional) default:
statement 1;
statement n;
}
由於switch語句中打破了傳統的語言模式,很多程序員使用傳統的塊式的包裝它們的多條語句的情況下:{ }
這是因爲所有三種語言的大多數結構都允許將塊樣式語句視爲一個語句,但switch語句不需要塊樣式在單個個案中執行多個語句。
如果沒有break語句分隔每個case,將會出現「fall through」 - 如果case n匹配並且沒有中斷,那麼將執行它下面的代碼(case n + 1) - 如果case n + 1沒有休息並被匹配,默認代碼將執行,如果兩者都沒有中斷,則在匹配情況n時,將執行情況n,情況n + 1和默認的代碼。
默認值是可選的,並指定要執行的switch語句的默認操作。通常情況下,默認條件是通用處理程序,或者如果值在邏輯上不是邏輯上不是switch語句中的值以外的其他位置,則會引發異常。
爲了說明在switch語句中執行switch語句,來看看這個人爲的例子:
String message = null;
int outerVariable = getOuterVariable();
switch(outerVariable) {
case n:
statement 1;
statement n;
break;
case n+1:
int innerVariable = getInnerVariable();
switch(innerVariable) {
case 1:
message = "IT WAS 1";
break;
default:
message = "WHY WOULD YOU DO THIS? OH THE HUMANITY!";
}
break;
// Optionally more statements
(optional) default:
statement 1;
statement n;
}
在花了你寫的這個問題,你可以自己已經測試了它的時間
...只是說... – 2009-10-18 01:44:51
我認爲SO的意義在於人們不需要編寫代碼來測試一個想法。 – 2009-10-18 01:48:13
@ande_turner:no。 SO在這裏回答問題,而不是做人而不是做事。 – 2010-02-05 06:56:51