7

我有一个与 switch-case 块中的花括号相关的问题

 switch( conditon ) { 

   case val1: {
      // something 
   }
   break;
   case val2: {
      // something 
   }
   break; 
   default:
   break;  
}

或类似的东西:

 switch( conditon ) { 

   case val1: {
      // something 
      break;
   }
   case val2: {
      // something 
      break;
   } 
   default:
   break;  
}

AI 知道这两个代码应该以相同的方式工作,但我认为这里有一些不合理之处。由于 break 应该导致从大括号块中跳出,因此理论上第二个代码应该像这样平滑:1. break course 跳出块 2. switch 继续执行 case val2 或大括号外的默认原因没有任何 break 语句。

您推荐使用哪个版本,它们真的以相同的方式工作吗?

4

2 回答 2

6

尝试这个:

{
System.out.println("A");
break;
System.out.println("B");
}

你会看到的

$ javac Y.java 
Y.java:35: error: break outside switch or loop
    break;
    ^
1 error

这意味着:你不能在块中使用它,它与块结合起来没有效果。

我不会把中断放在块之外,但我从来没有见过编码规则要求任何一种方式(你可以为双方提出论据)。也许这是因为块不经常用于分隔每个开关分支的可见性。

于 2015-03-26T09:49:24.850 回答
2

花括号限制了变量的范围。并且除了 if、for、while、switch.. 块之外对流控制没有影响,除非它们是可选的情况

于 2015-03-26T09:52:38.413 回答