Java switch case

当程序需要"根据一个变量的不同取值走不同分支"时,用一长串 else if 会显得啰嗦;switch 语句让这种多路选择一目了然,常用于菜单、星期、状态分发等场景。

switch 基本语法

先计算括号内表达式的值,再从上到下与各 case 比对,命中就执行该分支;全都不命中时执行 default。switch 支持 byte、short、int、char、String 与枚举类型。

public class SwitchDemo {
    public static void main(String[] args) {
        int day = 3;
        switch (day) {
            case 1:
                System.out.println("星期一");
                break;
            case 3:
                System.out.println("星期三");   // 输出:星期三
                break;
            default:
                System.out.println("其他日子");
        }
    }
}

case 贯穿与 break

每个 case 结尾要写 break,否则执行完会继续"贯穿"到后面的 case,多数情况下需要避免。

// 片段需放进 main 方法中运行
int n = 2;
switch (n) {
    case 1:
        System.out.println("一");
    case 2:
        System.out.println("二");   // 输出:二
    case 3:
        System.out.println("三");   // 输出:三(没写 break,贯穿执行)
}

合并 case:月份天数

"贯穿"也可以反过来利用:让多个 case 共享同一段代码,例如判断月份天数。

// 片段需放进 main 方法中运行
int month = 2;
switch (month) {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
        System.out.println("31 天");
        break;
    case 2:
        System.out.println("28 或 29 天");   // 输出:28 或 29 天
        break;
    default:
        System.out.println("30 天");
}

JDK7 起可以判断 String

case 后面直接写字符串字面量即可,比较的是字符串内容。

// 片段需放进 main 方法中运行
String fruit = "苹果";
switch (fruit) {
    case "苹果":
        System.out.println("一个苹果");   // 输出:一个苹果
        break;
    default:
        System.out.println("没有这种水果");
}

完整示例:星期几

用变量 day 模拟输入,完整跑一遍 switch 的分发流程。

public class WeekDemo {
    public static void main(String[] args) {
        int day = 5;
        switch (day) {
            case 1: System.out.println("星期一"); break;
            case 2: System.out.println("星期二"); break;
            case 3: System.out.println("星期三"); break;
            case 4: System.out.println("星期四"); break;
            case 5: System.out.println("星期五"); break;
            case 6: System.out.println("星期六"); break;
            case 7: System.out.println("星期日"); break;
            default: System.out.println("输入无效");
        }
    }
}

小结:switch 适合"对少量固定取值做分发",记得给每个 case 加 break,并用 default 兜底;需要范围判断或复杂条件时,仍应选用 if 系列语句。

笔记加载中…