繁体   English   中英

Java - Switch语句和花括号

[英]Java - Switch statement and curly braces

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

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

试试这个:

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

你会看到的

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM