Java中switch语句支持byte、short、int、char、枚举、String及对应包装类,不支持long、double等;case需常量且不可重复,省略break会导致贯穿;default非必需但建议添加以增强健壮性。

switch 适用的表达式类型
表达式结果必须是以下类型之一:
- 基本整型:byte、short、int、char
- 从 Java 5 开始支持:枚举(enum)类型
- 从 Java 7 开始支持:String 类型(注意:是字符串字面量或不可变字符串变量,内部靠
hashCode()+equals()判断) - 对应包装类:Byte、Short、Character、Integer、String、Enum(自动拆箱/判空需小心)
不支持 long、double、float、boolean 或普通对象——如果硬要用,得先强制转成允许类型(比如 (int)myLong),但要注意精度丢失。
case 匹配和 break 的关键作用
每个 case 后跟一个常量(编译期确定的值),与 switch 表达式结果逐个比较。一旦匹配,就从该 case 开始向下顺序执行,直到遇到 break 或 switch 结束。
省略 break 会导致“贯穿(fall-through)”——这是设计特性,不是 bug。例如:
立即学习“Java免费学习笔记(深入)”;
对于一个刚进入PHP 开发大门的程序员,最需要的就是一本实用的开发参考书,而不仅仅是各种快速入门的only hello wold。在开发的时候,也要注意到许多技巧和一些“潜规则”。PHP是一门很简单的脚本语言,但是用好它,也要下功夫的。同时,由于PHP 的特性,我一再强调,最NB 的PHP 程序员都不是搞PHP 的。为什么呢?因为PHP 作为一种胶水语言,用于粘合后端 数据库和前端页面,更多需
case 1:
System.out.print("A");
case 2:
System.out.print("B");
当表达式为 1 时,会同时输出 AB。合理利用能简化逻辑(比如多个值共用同一段代码),但多数时候要记得加 break。
default 分支不是必须的,但强烈建议加上
default 相当于“兜底”,在所有 case 都不匹配时执行。它不强制放在最后,但习惯上放末尾更清晰。即使你认为“不可能不匹配”,也建议写上 default 并至少加个日志或抛异常——这能帮你早发现非法输入或逻辑遗漏。
实际写法要注意的细节
-
case值必须是常量表达式,不能是变量或运算结果(如case i+1:不合法) - 同一个 switch 中,
case值不能重复,否则编译报错 - String 比较区分大小写,
"A"和"a"是不同 case - 如果用枚举,直接写
case Day.MONDAY:,不用加类名前缀
基本上就这些。用对了,switch 让代码干净利落;漏了 break 或类型搞错,可能跑出意料之外的结果。










