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);
六、关键规则
switch括号里只能是整型、字符、字符串、枚举 ,不能是long、float、double、boolean;case后面必须是常量,不能写变量;default位置任意,不匹配时一定会执行;- 传统写法忘记
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("其他水果");
}