交换机统计中的多个块?

时间:2014-08-27 18:30:16

标签: java switch-statement

此Q而非寻找验证。

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

  

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

是否存在2 + default个阻止的情况 可以存在switch个统计信息?不能以我的知识。而且 - 没有意义。

5 个答案:

答案 0 :(得分:1)

JLS始终是真正的参考:

http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.11

值得注意的是:

  

给定switch语句,以下所有内容必须为true或a   发生编译时错误:

     
      
  • 与switch语句关联的每个case常量必须与switch语句的类型兼容   表达式(第5.2节)。

  •   
  • 如果switch语句的Expression类型是枚举类型,则每个与switch语句关联的case常量必须为   这种类型的枚举常量。

  •   
  • 与switch语句关联的两个case常量中没有两个具有相同的值。

  •   
  • 与switch语句关联的case常量为null。

  •   
  • 最多一个默认标签与switch语句关联。

  •   

对于一些不那么含糊的东西,大概会更清楚:

  

切换块语句可以使用一个或多个case标签或单个可选的default标签进行标记。

答案 1 :(得分: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,那将是编译时错误。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

声明多于1个默认语句

是编译时错误

答案 4 :(得分:0)

不,即使你可以这样做,一个switch语句允许执行多行代码,因此当它只需要使用一次时,实际上永远不会使用两次语句。< / p>

执行多行代码的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;
        }