0Pricing
Java Academy · 课时

多标签 case

将多个标签组合在一起

多标签 case 是 CoddyKit 上的免费 Java Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。

分组标签

很多时候,多个值应该触发相同的操作。现代 switch 允许您在一个分支中列出多个标签,并用逗号分隔,让它们共享同一个分支。

逗号分隔的标签

请在 -> 前依次写出各个值,并用逗号分隔。只要其中任何一个值匹配,该分支就会执行。

public class Main {
    public static void main(String[] args) {
        int day = 7;
        switch (day) {
            case 1, 2, 3, 4, 5 -> System.out.println("Weekday");
            case 6, 7 -> System.out.println("Weekend");
        }
    }
}

检测元音

一种经典用法是将所有元音归入同一个分支,而不是编写五个单独的分支。

public class Main {
    public static void main(String[] args) {
        char c = 'o';
        switch (c) {
            case 'a', 'e', 'i', 'o', 'u' -> System.out.println("Vowel");
            default -> System.out.println("Consonant");
        }
    }
}

表达式中的多标签

多标签分支同样适用于 switch 表达式,列出的任意标签都会返回相同的值。

public class Main {
    public static void main(String[] args) {
        int month = 7;
        String season = switch (month) {
            case 12, 1, 2 -> "Winter";
            case 3, 4, 5 -> "Spring";
            case 6, 7, 8 -> "Summer";
            default -> "Autumn";
        };
        System.out.println(season);
    }
}

分组字符串标签

字符串值也可以分组。在这里,多种命令写法会映射到同一个操作。

public class Main {
    public static void main(String[] args) {
        String cmd = "quit";
        switch (cmd) {
            case "quit", "exit", "q" -> System.out.println("Closing");
            case "help", "h" -> System.out.println("Showing help");
            default -> System.out.println("Unknown command");
        }
    }
}

分组枚举标签

枚举常量也可以共享一个分支,从而使类别逻辑更加简洁。

public class Main {
    enum Day { MON, TUE, WED, THU, FRI, SAT, SUN }
    public static void main(String[] args) {
        Day d = Day.SAT;
        String kind = switch (d) {
            case SAT, SUN -> "Rest";
            default -> "Work";
        };
        System.out.println(kind);
    }
}

标签不能重复

同一个标签在整个 switch 中只能出现一次。在两个分支中列出相同的值会导致编译错误,因为编译器无法决定应该执行哪个分支。

public class Main {
    public static void main(String[] args) {
        int n = 2;
        switch (n) {
            case 1, 2 -> System.out.println("Low");
            case 3, 4 -> System.out.println("High");
            default -> System.out.println("Other");
        }
    }
}

与旧式分支贯穿的比较

在旧式冒号写法中,分组需要将空的贯穿分支堆叠在一个共享的代码主体上方。逗号语法清晰得多,也避免了意外的分支贯穿。

public class Main {
    public static void main(String[] args) {
        int code = 3;
        switch (code) {
            case 1, 3, 5, 7, 9 -> System.out.println("Odd");
            case 0, 2, 4, 6, 8 -> System.out.println("Even");
        }
    }
}

与代码块结合使用

分组分支也可以使用代码块主体。任何匹配的标签都会执行整个代码块。

public class Main {
    public static void main(String[] args) {
        char grade = 'B';
        switch (grade) {
            case 'A', 'B' -> {
                System.out.println("Pass");
                System.out.println("Well done");
            }
            default -> System.out.println("Try again");
        }
    }
}

与 yield 结合使用

当共享分支需要进行计算时,分组标签可以与 yield 结合使用。

public class Main {
    public static void main(String[] args) {
        int n = 4;
        int points = switch (n) {
            case 1, 2, 3 -> 10;
            case 4, 5, 6 -> {
                int bonus = n * 2;
                yield 20 + bonus;
            }
            default -> 0;
        };
        System.out.println(points);
    }
}

可读性提升

多标签分支可以将冗长的重复分支列表缩减为几个清晰的分组,让代码意图一目了然。

public class Main {
    public static void main(String[] args) {
        int http = 204;
        String group = switch (http / 100) {
            case 1, 2, 3 -> "OK-ish";
            case 4, 5 -> "Error";
            default -> "Unknown";
        };
        System.out.println(group);
    }
}

快速检查

在现代 Java 中,如何让多个值执行同一个 switch 分支?

回顾

您学习了多标签分支:

  • 在 -> 前以逗号分隔列出各个值
  • 适用于 int、字符、String 和枚举
  • 不像旧式写法那样会发生意外的分支贯穿
  • 每个标签只能出现一次
  • 需要时可以与代码块和 yield 结合使用

常见问题解答

「多标签 case」课时是免费的吗?

是的 — 「多标签 case」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。

「多标签 case」这节课中我会学到什么?

将多个标签组合在一起 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Java Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「多标签 case」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Java Academy 课中编写并运行代码吗?

能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 箭头式 switch
  2. 将 switch 用作表达式
  3. yield 关键字
  4. 多标签 case
← 返回 Java Academy