当前位置: 首页 > news >正文

Java switch case 语句详解

一、基本语法结构

1. 传统语法(Java 1.0 - 12 之前)

switch (表达式) {case 值1:// 当表达式等于值1时执行的代码break;case 值2:// 当表达式等于值2时执行的代码break;default:// 当表达式不匹配任何case时执行的代码
}
 
  • 表达式:必须是byteshortcharintenumString(Java 7+)或对应的包装类。
  • case:每个case标签后的值必须是常量或字面量,且不能重复。
  • break:终止当前switch语句,避免执行后续case
  • default:可选,当所有case都不匹配时执行。

2. 示例代码

int day = 3;
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("无效的日期");
}
 

二、Java 12+ 的增强语法

1. 箭头语法(->)

Java 12 引入了更简洁的箭头语法,无需break,且支持直接返回值:
 
int day = 3;
switch (day) {case 1 -> System.out.println("星期一");case 2 -> System.out.println("星期二");case 3 -> System.out.println("星期三");case 4 -> System.out.println("星期四");case 5 -> System.out.println("星期五");case 6, 7 -> System.out.println("周末");  // 多个值共享同一逻辑default -> System.out.println("无效的日期");
}
 

2. yield 关键字(Java 14+)

用于在switch表达式中返回值:

int day = 3;
String result = switch (day) {case 1, 2, 3, 4, 5 -> {// 复杂逻辑System.out.println("工作日");yield "工作日";}case 6, 7 -> "周末";default -> "无效的日期";
};
System.out.println(result);  // 输出: 工作日
 

三、switch 表达式

Java 14 开始,switch可以作为表达式返回值,替代传统的if-else链:
 
int num = 2;
String type = switch (num) {case 1 -> "类型一";case 2 -> "类型二";case 3 -> "类型三";default -> "未知类型";
};
System.out.println(type);  // 输出: 类型二
 

四、穿透特性(Fall-Through)

case块中省略break,会发生穿透,继续执行后续case

int month = 2;
int days = 0;
switch (month) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:days = 31;break;case 4:case 6:case 9:case 11:days = 30;break;case 2:days = 28;break;default:System.out.println("无效月份");
}
System.out.println(days);  // 输出: 28
 

五、支持的数据类型

数据类型支持版本说明
byte, short, char, int 所有版本 基本整数类型
enum Java 5+ 枚举类型
String Java 7+ 字符串类型(通过 hashCode 和 equals 实现)
包装类(Byte, Short, Character, Integer) Java 5+ 自动拆箱为基本类型

六、与 if-else 的对比

特性switch caseif-else
语法复杂度 简洁,适合多分支固定值判断 灵活,适合复杂条件判断
性能 通常更高(基于跳转表实现) 条件较多时性能下降
表达式类型 有限制(整数、枚举、字符串) 无限制(任意布尔表达式)
代码可读性 分支逻辑清晰 复杂条件下易混乱

七、常见应用场景

1. 状态机实现

enum State { START, PROCESS, END }
State current = State.PROCESS;switch (current) {case START -> System.out.println("初始化");case PROCESS -> System.out.println("处理中");case END -> System.out.println("结束");
}
 

2. 计算器功能

char operator = '+';
int a = 10, b = 5;
int result = switch (operator) {case '+' -> a + b;case '-' -> a - b;case '*' -> a * b;case '/' -> a / b;default -> throw new IllegalArgumentException("无效操作符");
};
System.out.println(result);  // 输出: 15
 

八、注意事项

  1. 避免穿透:除非有意为之,否则每个case后必须添加break或使用箭头语法。
  2. default 的位置:default可以放在任意位置,但建议放在末尾以提高可读性。
  3. case 值唯一性:每个case的值必须唯一,否则会导致编译错误。
  4. 性能考虑:当分支数量较多时,switch性能通常优于if-else
http://www.jsqmd.com/news/413375/

相关文章:

  • AI写论文攻略来袭!4款AI论文写作工具,为你的职称论文添砖加瓦!
  • 2026年比较好的ETFE太阳能板/太阳能板值得信赖厂家推荐(精选) - 行业平台推荐
  • TRAE AI IDE 开发Cangjie(仓颉语言) Elasticsearch 客户端SDK
  • 2026年郑州驾校实力推荐:管城/东区/航海路自带考场驾校,郑州东升驾校全区域覆盖 - 品牌推荐官
  • 2026年膨胀仪专业厂家推荐:湘潭市仪器仪表有限公司,高温卧式/立式/推杆式等全系供应 - 品牌推荐官
  • 2026年室内/人工/大型/诺泰克/小型飘雪机厂家推荐:河南晋安机械科技全系产品解析 - 品牌推荐官
  • 2026年热门的深圳柔性太阳能光伏板/深圳非标定制太阳能光伏板品牌厂家推荐 - 行业平台推荐
  • VNCVIEWER注册表公钥信息
  • 2026流体输送设备厂家推荐:宁波和利时流体科技,不锈钢均质混合泵/转子泵/乳化泵全系解决方案 - 品牌推荐官
  • 2026年液压机厂家实力推荐:滕州市大正液压设备有限公司四柱/龙门/伺服液压机全系供应 - 品牌推荐官
  • 2026年护散炉设备厂家推荐:青岛赛瑞得伟创电子科技立式/节能/8英寸卧式/ct护散炉全系解决方案 - 品牌推荐官
  • 2026年市面上正规的三边封包装袋定做厂家推荐排行榜单,三边封包装袋/四边封包装袋,三边封包装袋定做厂家推荐排行榜单 - 品牌推荐师
  • 2026年气血不足解决方案:中红元复方红枣提取液的活萃科技密码 - 速递信息
  • 2026年海容模块/EPS模块/泡沫模块建房厂家推荐:东营海容新材料有限公司全系产品解析 - 品牌推荐官
  • vue+nodejs+ElementUi的档案室管理系统
  • 2026真空陶瓷过滤机厂家推荐:连云港博云矿山机械,全自动/陶瓷/真空过滤机全系供应 - 品牌推荐官
  • 基于Java Spring Boot的社区垃圾分类管理平台系统(源码+文档+运行视频+讲解视频)
  • React19为什么一定要使用位运算?
  • 基于Java springboot毕业生学历证明系统(源码+文档+运行视频+讲解视频)
  • vue+nodejs+ElementUi的电动车共享预约充电站管理系统 微信小程序的设计与实现
  • 2026年浆内/乳液/AKD/中性/表面/固体表面施胶剂供应商推荐:青州金昊新材料全系产品解析 - 品牌推荐官
  • 2026年测定仪源头厂家大比拼,这些品牌值得关注,测厚仪/热封仪/摩擦系数仪/试验机/测定仪,测定仪供应厂家口碑排行 - 品牌推荐师
  • springboot基于java网上订餐系统(源码+文档+运行视频+讲解视频)
  • [AI提效-54]-有哪些App的类型以及他们对应的系统架构
  • Java 条件语句 - if...else详解
  • 2026年知名的家车两用吸尘器/无线吸尘器厂家热销推荐 - 行业平台推荐
  • 2026年GEO系统贴牌源头厂家排行榜,这5家服务商入选国内TOP5口碑推荐 - 资讯焦点
  • AI写论文实用攻略!4款精选AI论文写作工具,提升论文质量有妙招!
  • springboot基于java农村土地管理系统流动人口(源码+文档+运行视频+讲解视频)
  • OA系统:企业信息化升级的得力助手