Java switch 语句

Java switch 语句完整讲解

一、作用

根据一个变量的值 匹配多个分支,替代多段 if-else if,代码更简洁。

二、支持的数据类型

Java 1.5及之前

byte、short、char、int

Java 1.5 新增

枚举 enum

Java 1.7 新增

String

Java 14+ 新增(switch 表达式、箭头语法)

三、基础语法(传统写法,带break)

java 复制代码
switch(表达式){
    case 值1:
        执行代码;
        break; // 跳出switch,防止穿透
    case 值2:
        执行代码;
        break;
    default: // 所有case都不匹配时执行,可选
        默认代码;
}

示例

java 复制代码
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穿透(不加break)

没有 break 会继续执行下一个case代码:

java 复制代码
int num = 2;
switch (num){
    case 1:
        System.out.println("1");
    case 2:
        System.out.println("2");
    case 3:
        System.out.println("3");
        break;
}
// 输出:
// 2
// 3

用途:多个值执行同一套逻辑

java 复制代码
int month = 2;
switch (month){
    case 1:
    case 2:
    case 12:
        System.out.println("冬季");
        break;
    case 3:
    case 4:
    case 5:
        System.out.println("春季");
        break;
}

五、Java 14+ 箭头switch(无穿透,推荐)

不用写 break,支持直接返回值

java 复制代码
int day = 2;
switch (day) {
    case 1 -> System.out.println("周一");
    case 2 -> System.out.println("周二");
    default -> System.out.println("未知");
}

switch 表达式(直接赋值)

java 复制代码
int day = 3;
String week = switch (day) {
    case 1 -> "周一";
    case 2 -> "周二";
    case 3 -> "周三";
    default -> "错误";
};
System.out.println(week);

六、关键规则

  1. switch 括号里只能是整型、字符、字符串、枚举 ,不能是 long、float、double、boolean
  2. case 后面必须是常量,不能写变量;
  3. default 位置任意,不匹配时一定会执行;
  4. 传统写法忘记 break 会发生case穿透;箭头语法不会穿透。

七、字符串示例(Java7+)

java 复制代码
String fruit = "apple";
switch (fruit){
    case "apple":
        System.out.println("苹果");
        break;
    case "banana":
        System.out.println("香蕉");
        break;
    default:
        System.out.println("其他水果");
}