我无法理解switch语句的工作方式。下面的代码即使a的值为4也能正常工作。我知道switch语句内的每种情况都不是具有自己局部作用域的块,但这是否意味着变量x甚至被声明为a不等于2? >
int a = 2;
switch(a){
case 2:
int x = 4;
case 3:
x = 5;
case 4:
x = 7;
}
答案 0 :(得分:0)
案例1
int a = 2;
switch(a){
case 2:
int x = 4;
// executes
case 3:
x = 5;
// executes
case 4:
x = 7;
// executes
}
在此 value of x will be 7 because the switch won't break
中找到匹配的大小写。
案例2
如果要在2处停止执行,请执行以下操作
int a = 2;
switch(a){
case 2:
int x = 4; // variable declaration works even if case wont match. Validity inside switch for every line of code after this line
break;
// executes and break
case 3:
x = 5;
break;
// executes and break
case 4:
x = 7;
break;
// executes and break
default:
// write default case here
}
由于声明的范围在整个范围内,因此不必在每个x中使用int
。
开关中变量声明的范围将影响开关中的以下语句或代码行。这是因为,如果 variable声明,则范围不是由花括号定义的。
案例3
int a = 3;
switch(a){
case 2:
{
int x = 4;
break; // u can skip this break to. Then also it will throw error.
// x is local variable inside this braces
}
// executes
case 3:
x = 5;
// error
case 4:
x = 7;
// error
System.out.println(""+x);
}
在上述情况下,它将通过错误。因为它的范围仅在那种情况下。 在这种情况下,变量的范围在括号内声明。因此,在大括号之外,x将不起作用。因为在这种情况下x是局部变量。