default 是 switch 的兜底执行分支,当所有 case 值都不匹配表达式结果时触发;它可置于任意位置但仅能有一个,推荐末尾并加 break 避免穿透,不处理 null 引发的异常。

Java 中 switch 选择结构没有“路由”概念,default 不是网络意义上的路由,而是**兜底执行分支**——当所有 case 值都不匹配表达式结果时,自动跳转执行的代码块。 它不需要“配置”,只需在 switch 语句体内显式写出 `default:` 标签及对应逻辑,并建议加上 `break` 避免穿透。
default 的位置和写法
default 可以放在 switch 语句中的任意位置(开头、中间、结尾),但必须满足:
• 同一 switch 内只能有一个 default
• 它后面跟的是冒号 `:`,不是括号或等号
• 推荐放在末尾,符合阅读习惯,也避免因遗漏 break 导致意外穿透
default 必须配合 break 吗?
不是强制,但强烈建议加 break:
- 不加 break:执行完 default 后,会继续向下执行后续 case(如果有的话),造成“穿透”
- 加 break:确保只执行 default 分支,然后退出 switch
- 若故意利用穿透(如多个 case 共享逻辑),则 default 后可不加 break,但需明确设计意图
什么时候 default 会被触发?
仅当 expression 的值与所有 case 后的常量值(int、char、String、enum 等)均不相等时触发。例如:
注意:如果 expression 是 null 且 switch 作用于 String 类型(Java 7+),会抛出 NullPointerException,default 不会捕获;同理,枚举类型传入 null 也会报错。default 只处理“值不匹配”,不处理运行时异常。
一个安全实用的写法示例
处理用户输入的星期编号(1–7),其他值走 default:
int day = 0; // 比如用户输了个 0 或 8
switch (day) {
case 1: System.out.println("周一"); break;
case 2: System.out.println("周二"); break;
case 3: System.out.println("周三"); break;
case 4: System.out.println("周四"); break;
case 5: System.out.println("周五"); break;
case 6: System.out.println("周六"); break;
case 7: System.out.println("周日"); break;
default: System.out.println("无效输入,请输入 1~7"); break;
}
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











