Java的break跳出了所有的switch

在Java中,switch语句是一种非常有用的控制结构。它允许我们根据一个表达式的值来选择不同的执行路径。在某些情况下,我们可能希望在switch语句中的某个分支中跳出整个switch语句,而不仅仅是跳出当前分支。为了实现这个目标,我们可以使用break语句来中断switch语句的执行。

switch语句的基本语法

让我们首先回顾一下switch语句的基本语法。下面是一个简单的示例:

int day = 3;
String dayName;

switch (day) {
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    case 4:
        dayName = "Thursday";
        break;
    case 5:
        dayName = "Friday";
        break;
    default:
        dayName = "Invalid day";
}

System.out.println(dayName);

在上面的示例中,我们根据变量day的值选择不同的分支。每个分支都以case关键字开头,后面是一个常量表达式,表示与day的值进行匹配。如果匹配成功,就执行对应的代码块。如果没有匹配成功,就执行default分支中的代码块。

请注意,每个case分支的末尾都有一个break语句。这个break语句是必需的,它会告诉Java跳出switch语句,并继续执行switch语句之后的代码。如果我们省略了break语句,Java将会继续执行下一个分支中的代码,而不管它是否匹配。这种行为被称为“穿透”。

使用break跳出所有的switch

有时候,我们可能希望在某个分支中跳出整个switch语句,而不仅仅是跳出当前分支。为了实现这个目标,我们可以在需要跳出的分支中使用break语句,并添加一个标签来标识我们想要跳出的位置。

下面是一个示例,展示了如何使用break语句跳出所有的switch语句:

int day = 3;
String dayName;

outer:
switch (day) {
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break outer; // 跳出整个switch语句
    case 4:
        dayName = "Thursday";
        break;
    case 5:
        dayName = "Friday";
        break;
    default:
        dayName = "Invalid day";
}

System.out.println(dayName);

在上面的示例中,我们使用一个标签outer来标识我们想要跳出的位置。在case 3分支中,我们使用break outer;语句来跳出整个switch语句。这样,当day的值为3时,程序将会输出Wednesday,并继续执行switch语句之后的代码。

请注意,在break语句后面的标签名之前有一个冒号。这个冒号是必需的,它告诉Java这是一个标签,而不是一个普通的标识符。

类图

下面是一个展示了switch语句和break语句之间关系的类图:

classDiagram
    class Switch {
        +int day
        +String dayName
        +switch(day: int): void
    }

在上面的类图中,我们有一个Switch类,它有一个整型变量day和一个字符串变量dayName。类中还有一个switch方法,它接受一个整型参数day,并根据其值选择不同的执行路径。

状态图

下面是一个展示了使用break跳出所有的switch语句的状态图:

stateDiagram
    [*] --> Switch
    Switch --> case