是的。开关会中断语言块语句模式,但这主要是因为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