考虑以下代码:
int num = 0;
switch(num) {
case 1:
boolean bool = false;
break;
case 2:
String one;
String two;
String three;
//..simulating lots of vars
break;
default:
bool = true;
System.out.println(bool);
break;
}
由于我们被允许引用在另一个案例中声明的变量,这意味着即使未选择case 1
,仍然会声明boolean bool
。
由于default
是最后一个选项,而java从左到右(从上到下)工作,我假设case 2
(和任何其他情况)中的变量也将被声明
这让我觉得在选择案例之前声明的案例中你拥有的代码越多,实际访问案例所需的时间越长 与if相比所选案件首先被宣布。
有没有特定的原因切换语句以这种方式工作?如果有很多案例,最好不要使用if-else
而不是切换语句? (谈论处理时间,纳秒)
答案 0 :(得分:2)
{}表示范围,您可以以任何您喜欢的方式使用它。
在switch语句中:
switch (...) {
}
{}内的所有内容都属于同一范围。 如果您希望案例具有自己的范围,则需要使用{},如下所示:
switch (...) {
case 0: {
}
break;
case 1: {
}
break;
}
同样,您可以使用{}在范围内声明范围,如下所示:
{
{
int i;
}
{
int i;
}
}
答案 1 :(得分:2)
在C语言中的switch语句在C语言中的switch语句可能在B ... BCPL(当然具有相同的单块结构)中的switch语句之后被模式化之后,用Java模式化了Java中的switch语句...
作为一个长期失踪的Sun bug报告(关于其他事情),'原因在时间的迷雾中消失'。