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;
}
A 我知道这两个代码应该以相同的方式工作,但我认为这里有一些不合理之处。由于 break 应该导致从花括号块中跳出,所以理论上第二个代码应该像这样平滑:
1. break course 跳出街区
2. switch 继续执行 case val2 或 default 导致大括号外没有任何 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
这意味着:你不能在方块中使用它,它与方块结合没有任何效果。
我不会将 break 放在块外,但我从未见过任何一种编码规则都要求如此(你可以为双方提出论据)。也许这是因为块不是很频繁地用于分隔每个开关分支的可见性。
大括号限制了变量的范围。并且除了 if、for、while、switch.. 块之外对流量控制没有影响,除非它们是可选的
我有一个与 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;
}
A 我知道这两个代码应该以相同的方式工作,但我认为这里有一些不合理之处。由于 break 应该导致从花括号块中跳出,所以理论上第二个代码应该像这样平滑: 1. break course 跳出街区 2. switch 继续执行 case val2 或 default 导致大括号外没有任何 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
这意味着:你不能在方块中使用它,它与方块结合没有任何效果。
我不会将 break 放在块外,但我从未见过任何一种编码规则都要求如此(你可以为双方提出论据)。也许这是因为块不是很频繁地用于分隔每个开关分支的可见性。
大括号限制了变量的范围。并且除了 if、for、while、switch.. 块之外对流量控制没有影响,除非它们是可选的