📜  do switch 语句总是运行默认的 java (1)

📅  最后修改于: 2023-12-03 15:30:31.278000             🧑  作者: Mango

Switch 语句总是运行默认的 Java

在 Java 中,switch 语句是一种非常有用的控制结构,可以根据不同的条件来执行不同的代码块。但需要注意的是,如果没有使用 break 语句来跳出 case 块,那么 switch 语句会继续执行下一个 case 块,直到遇到 break 语句为止。如果所有的 case 块都没有匹配到条件,那么 default 块会被执行。然而,即使没有匹配到条件,default 块也不一定会被执行,这取决于 switch 语句的实现方式。在某些 JVM 中,switch 语句默认情况下会执行 default 块,而在另一些 JVM 中,则不会执行 default 块。因此,在编写 switch 语句时,一定要记得加上 break 以及 default 块。

以下是一个演示 switch 语句默认情况下执行 default 块的示例代码:

public class SwitchDemo {
    public static void main(String[] args) {
        int flag = 5;
        switch (flag) {
            case 1:
                System.out.println("flag为1");
                break;
            case 2:
                System.out.println("flag为2");
                break;
            case 3:
                System.out.println("flag为3");
                break;
            default:
                System.out.println("flag为其他值");
        }
    }
}

输出结果为:

flag为其他值

可以看到,即使没有匹配到条件,default 块还是被执行了。

为了避免这种情况的发生,可以在 default 块中抛出一个异常,这样即使 switch 语句默认情况下执行 default 块,也会抛出异常并中断程序的执行。以下是修改后的示例代码:

public class SwitchDemo {
    public static void main(String[] args) {
        int flag = 5;
        switch (flag) {
            case 1:
                System.out.println("flag为1");
                break;
            case 2:
                System.out.println("flag为2");
                break;
            case 3:
                System.out.println("flag为3");
                break;
            default:
                throw new RuntimeException("flag不能为其他值");
        }
    }
}

输出结果为:

Exception in thread "main" java.lang.RuntimeException: flag不能为其他值
	at SwitchDemo.main(SwitchDemo.java:13)

可以看到,程序抛出了一个异常,表明 flag 的值不能为其他值。这样即使 switch 语句默认情况下执行 default 块,也能及时发现问题并进行处理。