这个Q而不是寻找验证。
Java docs on switch statement读取像多个default
块可以:
switch语句的主体称为switch块。可以使用一个或多个大小写或默认标签来标记交换机块中的语句。 “
有什么案例可以在default
统计中存在2 + switch
块吗?不能以我的知识。而且 - 没有意义。
JLS始终是真正的参考:
http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.11
值得注意的是,这个:
给定switch语句,以下所有内容必须为true或发生编译时错误:
- 与switch语句关联的每个case常量必须与switch语句的Expression(第5.2节)的类型兼容。
- 如果switch语句的Expression的类型是枚举类型,那么与switch语句关联的每个case常量必须是该类型的枚举常量。
- 没有两个与switch语句关联的case常量具有相同的值。
- 没有与switch语句关联的case常量为null。
- 最多一个默认标签与switch语句相关联。
对于不那么模棱两可的东西,可能会更清楚:
切换块语句可以使用一个或多个
case
标签或单个可选的default
标签进行标记。
不可以。在switch语句中只能有一个默认块。
int a = -1;
switch (a) {
case 0: System.out.println("zero"); break;
case 1: System.out.println("one"); break;
default: System.out.println("default");
}
如果你添加了第二个default
,那将是编译时错误。
它只是说你可以有一个或多个标签,你可以使用的两种类型的标签是case和default。它无法澄清的是,您可以拥有多个案例,只有一个默认标签。
A statement in the switch block can be labeled with one or more case or default labels
它永远不会说它可以有超过1个默认标签。这里的“标签”以复数形式与其他案例标签一起使用。
声明多于1个默认语句是编译时错误
不,即使你可以这样做,一个switch语句允许执行多行代码,因此当它只需要使用一次时,实际上永远不会有使用两次语句的用法。
执行多行代码的switch语句示例:
switch (month){
case 1:
monthString = "January";
month = 2;
System.out.println("It is " + monthString + " the " + month + "of the year");
break;
case 2: monthString = "February";
break;
}