为什么它在java中的switch...case语句中的第一个有效case之后继续执行case主体(即使它们是无效的)。当我在每种情况下使用中断时,不会发生这种情况。另一个奇怪的事情是第一个有效案例之前的案例主体没有执行,而只有后面的案例被执行。这是为什么?
int val = 3;
switch (val) {
case 4:
System.out.println(4);
case 3:
System.out.println(3);
case 5:
System.out.println(5);
}
// the output is
// 3
// 5
我认为我们使用break语句只是为了提高效率,一旦找到一个有效的案例,我们就不会检查下一个案例。是不是这样?
我认为我们使用break语句只是为了提高效率,一旦找到一个有效的案例,我们就不会检查下一个案例。是不是这样?
不,不是。
switch
开始执行与输入匹配的 case 标签后面的语句,并继续执行 switch
中的所有剩余状态,直到/除非它遇到 break
。这就是 switch
语句的定义方式(在 Java、C 以及大多数从 C 语法派生的其他语言中)。