java Switch开关怎么理解
在 Java 里说到 “Switch 开关”,通常是指 switch 语句,它是一种多分支选择结构,用来替代多个 if...else if...else,让代码更清晰、可读性更好。
下面从 是什么、怎么用、执行流程、注意点、新特性 几个方面来理解。
一、Switch 是什么(通俗理解)
switch 就像一个 “多选一开关”:
- 根据一个变量的值
- 去匹配多个“选项(case)”
- 匹配到哪一个,就执行哪一个
- 如果没有匹配到,就执行
default
✅ 适合:一个变量和多个固定值比较
二、基本语法
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("未知日期");
}
执行过程
day == 3- 找到
case 3 - 输出 星期三
- 遇到
break,结束 switch
四、break 为什么很重要?
❌ 没有 break 会发生 贯穿(fall through)
int num = 1;
switch (num) {
case 1:
System.out.println("一");
case 2:
System.out.println("二");
default:
System.out.println("其他");
}
输出:
一
二
其他
✅ 原因:
匹配到 case 1 后,没有 break,继续执行后面的代码。
✅ 一般都要加 break(除非你特意想贯穿)
五、switch 支持哪些类型?
Java 传统支持:
byteshortcharintenum(枚举)
Java 7+ 支持:
String
❌ 不支持:
longfloatdoubleboolean
✅ 示例(String):
String color = "red";
switch (color) {
case "red":
System.out.println("红色");
break;
case "blue":
System.out.println("蓝色");
break;
}
六、default 是什么?
- 当 所有 case 都没匹配到
- 就执行
default - 类似于
if里的else
switch (x) {
case 1:
break;
default:
System.out.println("没有匹配到");
}
✅ default 可有可无
✅ 一般建议写上
七、Java 12+ 新特性:Switch 表达式(推荐)
旧写法 vs 新写法
旧写法
int score;
switch (level) {
case "A":
score = 90;
break;
case "B":
score = 80;
break;
default:
score = 60;
}
✅ 新写法(更像“开关赋值”)
int score = switch (level) {
case "A" -> 90;
case "B" -> 80;
default -> 60;
};
✅ 优点:
- 不用
break - 不会贯穿
- 可以直接返回值
- 代码更简洁
八、什么时候用 switch,什么时候用 if?
✅ 用 switch:
- 判断 一个变量
- 和 多个固定值 比较
✅ 用 if:
- 范围判断(如
x > 10) - 多个条件组合
九、一句话总结
Switch 就是一个“值匹配开关”,根据变量的值,选择执行哪一段代码。
如果你愿意,我可以:
- 用 生活例子 再给你讲一遍
- 帮你 对比 if 和 switch
- 给你 面试题常见坑点