交换机统计中的多个块?

问题描述 投票:1回答:5

这个Q而不是寻找验证。

Java docs on switch statement读取像多个default块可以:

switch语句的主体称为switch块。可以使用一个或多个大小写或默认标签来标记交换机块中的语句。 “

有什么案例可以在default统计中存在2 + switch块吗?不能以我的知识。而且 - 没有意义。

java switch-statement
5个回答
1
投票

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标签进行标记。


0
投票

不可以。在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,那将是编译时错误。


0
投票

它只是说你可以有一个或多个标签,你可以使用的两种类型的标签是case和default。它无法澄清的是,您可以拥有多个案例,只有一个默认标签。


0
投票

A statement in the switch block can be labeled with one or more case or default labels

它永远不会说它可以有超过1个默认标签。这里的“标签”以复数形式与其他案例标签一起使用。

声明多于1个默认语句是编译时错误


0
投票

不,即使你可以这样做,一个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;
        }
© www.soinside.com 2019 - 2024. All rights reserved.