关于java:为什么switch语句会在case之后继续

Why do switch statements continue after case

本问题已经有最佳答案,请猛点这里访问。

在Java中的一个交换机语句中评估一个实例(并且我确信其他语言)之后,也会评估下面的情况,除非使用诸如中断或返回这样的控制语句。

我知道这可能是一个实现细节,但实现此功能的原因是什么?

谢谢!


当硬件发生变化时,它为我节省了大量重复的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void measureCPD (void) {
char setting;
  switch (DrawerType) {
    case 1:
      setting = SV1 | SV7;
      break;

    case 0:
    case 2:
      setting = SV1;
      break;

    case 5:
      PORTA |= SVx;
    case 3:
    case 4:
      setting = SV1 | SV7;
      break;
    default: // Illegal drawer type
      setting = SV1;
    }
  SetValves (setting);
  }

因为从一个案例到另一个案例"穿越"是有用的。如果你不需要这个(通常情况下是这样),一个简单的break可以避免这个问题。另一方面,如果案例在默认情况下没有失败,那么就没有任何简单的方法可以做到这一点。


我倾向于把它与汇编编程作类比,case是你跳进去的标签,它贯穿它下面的标签(程序从上到下流动),所以你需要一个跳(break;才能跳出来。


有时您可能希望多个case语句执行同一代码。所以你会摔倒,在最后做休息。


这是因为箱子标签是goto目的地标签。