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

java switch及其新特性

switch是什么

在Java中,switch语句是一种多分支选择结构,它允许程序根据一个表达式的值从多个代码块中选择执行哪一个。switch语句通常比多个if-else语句更清晰、更易读。

Java switch语句的基本语法:

switch (expression) {case value1:// 当 expression 的值等于 value1 时执行的代码break;case value2:// 当 expression 的值等于 value2 时执行的代码break;// 可以有任意数量的 case 语句default:// 如果 expression 的值与所有 case 值都不匹配,则执行这里的代码
}

关键点:

  • 表达式 (expression):可以是byte, short, int, 或者char类型。从Java 5开始,还可以使用枚举类型。从Java 7开始,支持String类型作为表达式。
  • case标签 (case value:):每个case后面跟着一个要比较的值和冒号。这个值必须与表达式的类型兼容,并且不能重复。
  • break语句:用于终止switch语句中的一个特定路径。如果不包含break,控制流将继续执行下一个case,直到遇到break或switch语句结束。这种行为称为“fall-through”。
  • default标签:可选,默认情况下执行的代码块,如果没有任何case匹配表达式的值时将执行这段代码。

示例如下

在这里插入图片描述

Java 12+ 新特性

1. 箭头 -> 替代冒号 :

从Java 12开始,switch语句有了新的增强,包括箭头(->)来替代传统的冒号(:),并且默认不再需要break语句来防止fall-through。此外,Java 14引入了预览版的模式匹配switch表达式,允许直接返回值而不需要额外的return语句。例如:
在这里插入图片描述

至少代码量倒是直接少了不少

2. 自动断言(Automatic Break)

在新的switch表达式中,当使用箭头(->)时,每个case分支默认自动包含了一个隐式的break,从而避免了传统的fall-through行为。这意味着你不再需要显式地为每个case添加break语句。
在这里插入图片描述

3. switch 表达式

从Java 14起,switch不仅可以作为语句使用,还可以作为一个表达式,它能够返回值。这使得switch可以被用作赋值的一部分或者直接返回函数的结果。
在这里插入图片描述

4. 多个 case 标签合并

你可以将多个具有相同处理逻辑的case标签组合在一起,使用逗号分隔。这种方式可以减少重复代码,使程序更加简洁。

在这里插入图片描述

5. yield 关键字

当switch作为一个表达式使用时,如果需要在case体内执行多条语句,并且最后返回一个值,可以使用yield关键字。yield会将控制权交还给调用者,并传递一个值。
在这里插入图片描述

http://www.lryc.cn/news/500663.html

相关文章:

  • E卷-货币单位换算(100分)
  • 什么是MMD Maximum Mean Discrepancy 最大均值差异?
  • 沐风老师3DMAX摄相机阵列插件使用方法
  • Java Web 开发学习中:过滤器与 Ajax 异步请求
  • 数据结构 (36)各种排序方法的综合比较
  • 使用vue搭建不需要打包的前端项目
  • 发布订阅者=>fiber=>虚拟dom
  • Python-计算机中的码制以及基础运算符(用于分析内存)
  • yum 离线软件安装
  • 【C语言】17. 数据在内存中的存储
  • 二叉树概述
  • 【开源免费】基于SpringBoot+Vue.JS图书进销存管理系统(JAVA毕业设计)
  • 惠普M126a连接共享打印机故障0x000006ba,系统不支持请求的命令,print spooler重复停止
  • Chainlit集成LlamaIndex实现一个通过用户聊天对话的酒店预定系统
  • 计算机网络之网络层超详细讲解
  • 代码随想录算法训练营day51|动态规划part13
  • ESP8266自制桌宠机器狗
  • 【力扣】409.最长回文串
  • git 拉取代码时报错 gitignore Please move or remove them before you merge.
  • 19,[极客大挑战 2019]PHP1
  • MQTT消息服务器mosquitto介绍及说明
  • uniapp结合movable-area与movable-view实现拖拽功能
  • 十九(GIT2)、token、黑马就业数据平台(页面访问控制(token)、首页统计数据、登录状态失效)、axios请求及响应拦截器、Git远程仓库
  • 文生图模型开源之光!ComfyUI - AuraFlow本地部署教程
  • spring boot之@Import注解的应用
  • 【记录】用JUnit 4的@Test注解时报错java.lang.NullPointerException的原因与解决方法
  • Spring Boot 自动化脚本-多线程批量压缩图片
  • 依托 Spring Boot框架,精铸高扩展性招聘信息管控系统
  • 【前端】理解 JavaScript 对象属性访问的复杂性
  • Django异步视图adrf解决办法