[英]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.