Java switch语句的执行流程是怎样的?
·
、
一、传统 switch(表达式) 执行步骤
switch(表达式){
case 常量1:
代码1;
break;
case 常量2:
代码2;
default:
默认代码;
}
执行顺序分6步:
- 计算括号内表达式的值
先算出 switch() 里的结果(int/char/String/枚举等)。 - 从上到下依次匹配 case 常量
拿表达式结果和每个 case 后的常量做等值对比:- 找到相等的case,进入该分支执行代码;
- 全部case都不匹配,直接跳到
default。
- 执行当前case里的代码
- 分两种情况:
- 分支末尾有
break:直接跳出整个switch,switch结束; - 没有
break(case穿透):不会退出,继续往下执行下一个case的代码,不再做匹配判断,直到遇见break或全部执行完。
- 分支末尾有
- 若中途没break,持续穿透执行后续所有case代码。
- 全部执行完毕,跳出switch,运行后面代码。
案例演示case穿透流程
int num = 1;
switch(num){
case 1:
System.out.println("1");
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
}
流程:
- 计算num=1
- 匹配case 1,进入分支打印1
- 无break,穿透,不匹配直接进case2
- 打印2,遇到break,结束switch
输出:
1
2
无匹配、走default流程
int num = 9;
switch(num){
case 1: System.out.println("一");break;
case 2: System.out.println("二");break;
default: System.out.println("无效数字");
}
- num=9
- case1、case2都不匹配
- 进入default执行打印
- 分支结束,switch退出
二、Java14+ 箭头 switch -> 执行流程(无穿透)
语法:
switch(值){
case 1,2 -> System.out.println("一二");
case 3 -> System.out.println("三");
default -> System.out.println("其他");
}
执行流程:
- 计算switch表达式值;
- 自上而下匹配case常量;
- 匹配成功,执行
->后面代码块; - 自动终止,不会穿透下一个case,不用写break;
- 全部不匹配执行default;
- 直接退出switch。
三、switch表达式(带yield返回值)流程
int score = 85;
String grade = switch(score/10){
case 9,10 -> "优秀";
case 8 -> "良好";
default -> "不及格";
};
- 计算表达式
score/10 = 8; - 匹配case 8;
- 执行分支,
yield/直接写值返回结果; - 将返回值赋给变量grade;
- switch结束。
多行分支必须用 {} + yield:
String s = switch(n){
case 1 -> {
System.out.println("匹配1");
yield "一号";
}
default -> "未知";
};
执行到yield就代表当前分支结束,返回值,跳出switch。
四、总结核心流程口诀
- 先算switch括号值;
- 从上往下挨个匹配case;
- 匹配到就执行分支代码;
- 传统switch遇break才退出,无break会穿透;
- 箭头switch自动阻断穿透;
- 全都不匹配执行default;
- 结束后执行switch外部代码。
更多推荐

所有评论(0)