不使用“break”时“Switch...case”语句的奇怪行为

问题描述 投票:0回答:1

为什么它在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语句只是为了提高效率,一旦找到一个有效的案例,我们就不会检查下一个案例。是不是这样?

java switch-statement
1个回答
0
投票

我认为我们使用break语句只是为了提高效率,一旦找到一个有效的案例,我们就不会检查下一个案例。是不是这样?

不,不是。

switch
开始执行与输入匹配的 case 标签后面的语句,并继续执行
switch
中的所有剩余状态,直到/除非它遇到
break
。这就是
switch
语句的定义方式(在 Java、C 以及大多数从 C 语法派生的其他语言中)。

© www.soinside.com 2019 - 2024. All rights reserved.