Java - Switch语句和花括号

时间:2015-03-26 09:43:38

标签: java switch-statement break curly-brackets

我有一个与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;  
}

我知道这两个代码应该以相同的方式工作,但我认为这里存在一些不合理之处。因为休息应该导致从花括号块跳出来所以理论上第二个代码应该像这样平滑: 1.突破障碍 2.切换继续执行情况val2或默认原因在大括号外没有任何break语句。

您建议使用哪个版本,它们的工作方式是否相同?

2 个答案:

答案 0 :(得分:5)

试试这个:

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

你会看到

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

这意味着:您无法在块中使用它,它与块组合无效。

我不会把这个突破放在禁区之外,但是我从来没有看到编码规则要求任何一种方式(你可以为双方提出论据)。也许这是因为不经常使用块来分隔每个交换机分支的可见性。

答案 1 :(得分:2)

大括号限制了变量的范围。除了if,for,while,switch .. block之外,对流量控制没有任何影响,除了它们是可选的情况