switch case 语句是多分支选择结构,用来替代多层 if else 判断,当同一个表达式需要匹配多个固定取值的时候,使用 switch case 代码可读性会更好,它会计算括号里面表达式的值,然后依次匹配每一个 case 后面的常量,如果匹配成功就执行对应的代码块,遇到 break 就跳出整个 switch 结构,如果全部 case 都匹配不上,就执行 default 里面的代码,大部分编程语言比如 C 语言 Java JavaScript 都支持这个语法,核心要点就是 case 后面必须是常量,每个分支记得加 break,不然会发生穿透执行,很多初学者踩坑就是忘记写 break,导致代码执行完当前分支之后继续往下跑,学习的时候要掌握基础结构执行流程,理解穿透现象,区分它和 if else 的适用场景,写出规范的 switch case 代码。
基础语法结构
switch 表达式
case 常量 1
代码语句
break
case 常量 2
代码语句
break
default
代码语句
break
执行流程讲解
第一步 计算 switch 括号内表达式的结果
第二步 拿这个结果和所有 case 后面的常量做等值匹配
第三步 匹配成功,从当前 case 位置开始执行内部代码
第四步 如果碰到 break,立刻跳出 switch,不再继续后面 case
第五步 如果没有 break,会继续执行下一个 case 代码,也就是 case 穿透
第六步 所有 case 都没有匹配成功,执行 default 分支,default 可以写在任意位置,一般习惯放在末尾
switch case 和 if else 对比表
| 对比项 | switch case | if else |
|---|---|---|
| 判断方式 | 等值匹配 | 支持大小于 区间 复合条件 |
| 判断类型 | 整数 字符 枚举 部分语言支持字符串 | 几乎所有条件都支持 |
| 可读性 | 多固定分支更清爽 | 分支条件复杂时更灵活 |
| 缺点 | 不能直接判断区间 | 多层嵌套时代码臃肿 |
重点核心知识点
1 break 的作用
break 用来终止 switch,如果省略 break,就会出现穿透,也就是匹配上当前 case 之后,后面所有 case 代码都会继续执行,直到遇到 break 或者 switch 结束。
2 default 分支
default 是兜底分支,不是强制必须写,如果确定所有情况都覆盖,可以省略 default,但是工程代码一般推荐写上,方便处理异常情况。
3 case 常量要求
case 后面不能写变量,不能写表达式,必须是编译期就确定的固定常量,不能写类似 case a 大于 5 这种条件。
4 多 case 合并写法
多个分支执行相同代码,可以连续写多个 case,最后统一写代码和 break,实现多值共用一段逻辑。
简单示例
int num = 2
switch num
case 1
打印 数字是 1
break
case 2
打印 数字是 2
break
default
打印 其他数字
break
常见使用场景
菜单选项选择,状态码判断,枚举类型分支处理,按键值判断,这类固定离散取值场景非常适合 switch case 语句,如果是范围判断比如成绩 0 到 60 不及格,这种就更适合 if else。
【常见问题】
问题 1 switchcase 语句怎么用的时候忘记 break 会发生什么
回答 1 switchcase 语句怎么用,忘记 break 会出现 case 穿透,当前分支代码执行完成之后,还会继续执行后面的 case 代码,这是 switchcase 语句怎么用里面最常见错误
问题 2 switchcase 语句怎么用 可以判断数字区间吗
回答 1 switchcase 语句怎么用,原生 switchcase 语句只能做等值匹配,不能直接判断区间,如果需要区间判断,优先选择 if else,不适合强行使用 switchcase 语句怎么用这套结构
问题 3 switchcase 语句怎么用 default 分支可以省略吗
回答 1 switchcase 语句怎么用,default 属于可选分支,可以省略 switchcase 语句怎么用里面的 default,但是正式项目建议保留 default 用来兜底处理异常情况
问题 4 switchcase 语句怎么用 case 后面可以写变量吗
回答 1 switchcase 语句怎么用,case 后面必须是固定常量,switchcase 语句怎么用语法不允许 case 后面写变量或者动态表达式
【免责申明】
本文仅为 switch case 语句编程知识科普参考,不同编程语言语法细节存在差异,实际开发请对照对应语言官方文档,代码示例仅用于学习演示。


