我已经在stackoverflow中搜索了有关问题的原因,为什么在找到匹配的情况后开关不会中断。
例如,我编写了一些模拟骰子的代码。对于每次投掷,我都会因为统计原因而计算(一,...... = int)。
switch (actualThrow) {
case (1): one++;
case (2): two++;
case (3): three++;
case (4): four++;
case (5): five++;
case (6): six++;
}
我 DO 知道,如果我的投掷是3(Why do we need break after case statements?),将检查案例(3)-case(6),并且将通过插入{{来阻止它1}},但我想 理解 ,为什么显然会检查以下情况,但是执行,尽管条件未得到满足。
答案 0 :(得分:5)
想象一下这种情况:
switch(trafficLight.state) {
case GREEN:
car.drive();
break;
case YELLOW:
car.drive();
break;
case RED:
car.stop();
break;
}
看起来有点浪费,因为GREEN和YELL都做同样的事情。 Java允许我们进行整合,以便多个条件采取相同的操作:
switch(trafficLight.state) {
case GREEN:
case YELLOW:
// Now both GREEN and YELLOW will use this code
car.drive();
break;
case RED:
car.stop();
break;
}
代码少,效果相同。就这样。这就是简单的案例,请注意,还有其他方法可以使用不那么明显且更容易被滥用的方法。
答案 1 :(得分:0)
通过switch-case语句进行解析时,每个case只是一个标签。如果有任何匹配的情况,那么它将直到它找到一个中断或语句的结尾(}
)。
它类似于Java操作码(本质上是汇编代码)。您可以使用标签跳转到。除此之外,它们在代码中并没有真正起作用。