对于switch语句,是否可以在switch语句中更改switch的值,以便它可以跳转到不同的情况? 例如:
int w = 0;
switch(w)
{
case 1:
doSomething();
w = 3;
case 2:
doSomething();
break;
case 3:
doSomething();
break;
}
基本上我要问的是,如果我没有为一个案例放置一个break语句并且我在同一个案例中更改了switch的值,代码是否会执行这两种情况?
答案 0 :(得分:3)
是的,您可以更改开关内的值,但在您更改值的情况下,它将不会执行新值的大小写。
在你的情况下,它不会出现任何情况,因为没有0的情况。但如果你改为w = 1那么它将用于案例1然后用于案例2,因为你没有休息;但它不适用于案例3.
答案 1 :(得分:2)
不,它不会改变,也不会执行新的案例陈述。
请记住,一旦找到 相应的 匹配与case语句对应的switch语句内的值,就会执行该特定情况并执行一次(如果在每种情况之后提供break以防止掉落所有情况),然后控制返回到switch语句的结尾。
示例代码:
public class A {
public static void main(String [] args) {
int i=1;
switch(i) {
case 1 :
System.out.println("Case 1");
i = 2;
break;
case 2 :
System.out.println("Changed to Case 2");
break;
default:
System.out.println("Default");
break;
}
System.out.println("Final value of i " + i);
}
}
输出
Case 1
Final value of i 2
注意:插入正确的断点,尝试调试。你会了解自己,到底发生了什么。
答案 2 :(得分:1)
如果我们在每个案例之后都没有给出中断,那么Java将从匹配案例开始执行语句并继续执行以下情况的语句,直到找到break语句或遇到switch语句结束。
答案 3 :(得分:0)
如果case 1
恰好执行,那只是通过落到case 2
。由于break
中有case 2
,因此不会发生进一步的堕落。由于case 3
中的语句w = 3 ;
,它不会跳转到case 1
。