Java - Switch语句和花括号

Mic*_*bro 4 java break switch-statement curly-brackets

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

 switch( conditon ) { 

   case val1: {
      // something 
   }
   break;
   case val2: {
      // something 
   }
   break; 
   default:
   break;  
}
Run Code Online (Sandbox Code Playgroud)

或类似的东西:

 switch( conditon ) { 

   case val1: {
      // something 
      break;
   }
   case val2: {
      // something 
      break;
   } 
   default:
   break;  
}
Run Code Online (Sandbox Code Playgroud)

AI知道这两个代码应该以相同的方式工作,但我认为这里存在一些不合理之处.由于断点应该导致从花括号块跳出,所以理论上第二个代码应该像这样顺利:1.断开跳出块2的路线.切换继续执行情况val2或默认导致在括号外没有任何break语句.

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

lau*_*une 5

试试这个:

{
System.out.println("A");
break;
System.out.println("B");
}
Run Code Online (Sandbox Code Playgroud)

你会看到的

$ javac Y.java 
Y.java:35: error: break outside switch or loop
    break;
    ^
1 error
Run Code Online (Sandbox Code Playgroud)

这意味着:您不能在块中使用它,它与块组合无效.

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