教程中心 / Java教程 / switch语句

switch语句

8分钟 流程控制

switch语句概述

switch语句用于多分支选择,根据表达式的值选择执行不同的代码块。

基本语法

 switch(表达式) {
    case 值1:
        // 执行代码
        break;
    case 值2:
        // 执行代码
        break;
    default:
        // 默认执行代码
} 

示例:星期几判断

 int day = 3;
switch(day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    case 3:
        System.out.println("星期三");
        break;
    default:
        System.out.println("其他");
} 

case穿透

当case后没有break语句时,会继续执行下一个case(穿透),可以利用这一点:

 int score = 85;
switch(score / 10) {
    case 10:
    case 9:
        System.out.println("优秀");
        break;
    case 8:
    case 7:
        System.out.println("良好");
        break;
    case 6:
        System.out.println("及格");
        break;
    default:
        System.out.println("不及格");
} 

switch表达式(Java 14+)

Java 14引入新的switch表达式,使用箭头函数和yield返回值:

 // Java 14+ switch表达式
String result = switch(day) {
    case 1 -> "星期一";
    case 2 -> "星期二";
    case 3 -> "星期三";
    default -> "其他";
};

// 使用yield返回值
int days = switch(month) {
    case 1, 3, 5, 7, 8, 10, 12 -> 31;
    case 4, 6, 9, 11 -> 30;
    case 2 -> 28;
    default -> 0;
}; 

多值匹配(Java 21+)

Java 21支持在一个case中匹配多个值:

 String dayType = switch(day) {
    case 1, 2, 3, 4, 5 -> "工作日";
    case 6, 7 -> "周末";
    default -> "无效";
}; 

switch vs if-else

特性switchif-else
适用场景离散值判断范围判断
判断类型byte/short/int/char/String/enum任意boolean条件
可读性多分支时更清晰条件复杂时更灵活

小结

  • switch根据表达式的值选择执行对应的case
  • 每个case后需要break防止穿透(除非故意利用穿透)
  • default处理所有case都不匹配的情况
  • Java 14+支持箭头语法switch表达式
  • Java 21+支持多值匹配:case 1, 2, 3 ->
☕ Java 在线代码编辑器
📝 运行结果