当前位置: 首页 > 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会将控制权交还给调用者,并传递一个值。
在这里插入图片描述

相关文章:

java switch及其新特性

switch是什么 在Java中,switch语句是一种多分支选择结构,它允许程序根据一个表达式的值从多个代码块中选择执行哪一个。switch语句通常比多个if-else语句更清晰、更易读。 Java switch语句的基本语法: switch (expression) {case value1:/…...

E卷-货币单位换算(100分)

货币单位换算 问题描述 在一个多国货币记账本中,记录了若干条不同货币的金额。现在需要将这些金额全部转换成人民币分(fen),并进行汇总。每条记录可能包含单独的元、单独的分,或者元与分的组合。转换时,需要考虑不同货币之间的汇率关系。 要求将这些货币全部换算成人民…...

什么是MMD Maximum Mean Discrepancy 最大均值差异?

9多次在迁移学习看到了,居然还是Bernhard Schlkopf大佬的论文,仔细看看。 一.什么是MMD? 1. MMD要做什么? 判断两个样本(族)是不是来自于同一分布 2.怎么做?(直观上)…...

沐风老师3DMAX摄相机阵列插件使用方法

3DMAX摄相机阵列插件,从网格对象或样条线的顶点法线快速创建摄相机阵列。该插件从网格的顶点或样条线的节点获取每个摄影机的位置和方向。 3DMAX摄相机阵列插件支持目前3dMax主流的物理相机、标准相机、VRay物理相机。 【版本要求】 3dMax 2015及更高版本 【安装方…...

Java Web 开发学习中:过滤器与 Ajax 异步请求

一、过滤器 Filter: 过滤器的概念与用途 在一个庞大的 Web 应用中,有许多资源需要受到保护或进行特定的预处理。过滤器就像是一位智能的守卫,站在资源的入口处,根据预先设定的规则,决定哪些请求可以顺利访问资源&…...

数据结构 (36)各种排序方法的综合比较

一、常见排序方法分类 插入排序类 直接插入排序:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。希尔排序:是插入排序的一种改进版本,先将整个待排序的记录序列分割成为…...

使用vue搭建不需要打包的前端项目

需求详情:用户不要项目进行打包,开发还是选用vue2,且需要便于上手 项目目录 >api 存放api.js,主要是前端用到的接口 >css >>>fonts 存放页面需要的字体文件 >>>1.css 存放所有css文件 >data 存放echarts…...

发布订阅者=>fiber=>虚拟dom

文章目录 vue的响应式原理-发布订阅者模式vue3 响应式原理及优化fiberfiber 与 虚拟dom vue的响应式原理-发布订阅者模式 Vue响应式原理概述 Vue.js的响应式原理是其核心特性之一。它使得当数据发生变化时,与之绑定的DOM元素能够自动更新。其主要基于数据劫持和发布…...

Python-计算机中的码制以及基础运算符(用于分析内存)

记录python学习,直到学会基本的爬虫,使用python搭建接口自动化测试就算学会了,在进阶webui自动化,app自动化 python基础2-码制 计算机中的码制原码(True Form)反码(Ones Complement&#xff09…...

yum 离线软件安装

适用范围 支持YUM软件管理的操作系统: 银河麒麟 服务器操作系统V10统信服务器操作系统V20CentOS 系列 准备 准备一台可以连接互联网并且与离线安装的操作系统相同版本的操作系统,包括指令集类型相同。 安装下载工具 查询是否已经安装下载工具 yum…...

【C语言】17. 数据在内存中的存储

文章目录 一、整数在内存中的存储二、⼤⼩端字节序和字节序判断1、什么是⼤⼩端?2、为什么有⼤⼩端?3、练习1)练习12)练习23)练习34)练习45) 练习56)练习6 三、浮点数在内存中的存储1、浮点数的…...

二叉树概述

目录 一、二叉树的基本结构 二、二叉树的遍历 1.前序 2.中序 3.后序 4.层序遍历 三.计算二叉树的相关参数 1.计算节点总个数 2.计算叶子节点的个数 3.计算树的高度 4.计算第k层的子树个数 5.查找树中val为x的节点 四.刷题 1.单值二叉树 2.检查两棵树是否相同 3.一…...

【开源免费】基于SpringBoot+Vue.JS图书进销存管理系统(JAVA毕业设计)

博主说明:本文项目编号 T 082 ,文末自助获取源码 \color{red}{T082,文末自助获取源码} T082,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...

惠普M126a连接共享打印机故障0x000006ba,系统不支持请求的命令,print spooler重复停止

故障说明:直连惠普M126a打印机正常打印,通过共享连接的报故障。 目前已知有三种故障: 1、0x000006ba报错2、系统不支持请求的命令3、print spooler重复停止(或者,print spooler没有停止依然报故障) 解决方…...

Chainlit集成LlamaIndex实现一个通过用户聊天对话的酒店预定系统

Agent 简介 “Agent”是一个自动推理和决策引擎。它接受用户输入/查询,并为执行该查询做出内部决策,以便返回正确的结果。关键的代理组件可以包括但不限于: 把复杂的问题分解成小问题选择要使用的外部工具+调用工具的参数计划一系列的任务将以前完成的任务存储在内存模块中…...

计算机网络之网络层超详细讲解

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络之网络层超详细讲解 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌 …...

代码随想录算法训练营day51|动态规划part13

回文子串 回文子串这里的递推式不太一样,dp[i] 和 dp[i-1] ,dp[i 1] 看上去都没啥关系。所以要回归到回文的定义 而我们发现,判断一个子字符串(字符串下标范围[i,j])是否回文,依赖于,子字符串…...

ESP8266自制桌宠机器狗

看到别人的桌宠机器狗有没有想要拥有一台的冲动,其实我们可以使用少量的资金自制一台机器狗 1 硬件 esp8266芯片 舵机 超声波传感器 2 接线 ESP8266配件...

【力扣】409.最长回文串

问题描述 思路解析 因为同时包含大小写字母,直接创建个ASCII表大小的桶来标记又因为是要回文子串,所以偶数个数的一定可以那么同时,对于出现奇数次数的,我没需要他们的次数-1,变为偶数,并且可以标记出现过…...

git 拉取代码时报错 gitignore Please move or remove them before you merge.

git 拉取代码时报错, The following untracked working tree files would be overwritten by merge: .gitignore Please move or remove them before you merge. 当你在使用 Git 进行代码拉取(通常是执行 git pull 或 git merge 命令)时遇到这…...

告别笨重模拟器:Windows系统上直接安装APK的终极方案

告别笨重模拟器:Windows系统上直接安装APK的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经为了在电脑上运行一个简单的手机应用而不得…...

羽毛球每天必练的基本功:拉吊四方球战术、吊杀结合战术

文章目录 引言 I 羽毛球每天必练的基本功 1. 握拍练习 2. 挥拍动作 3. 步法训练 4. 球感练习 5. 发力技巧 II 发力 正确发力 握拍 反手发力 III 羽毛球单打战术 拉吊四方球战术 直线变斜线战术 重复落点战术 吊杀结合战术 追身球压制战术 防守反击战术 引言 打球前必须热身(活…...

Proxmox VE – 修复 LVM Thin Pool “pve/data” 激活失败

逐步诊断与恢复操作指南适用范围:PVE 宿主机,LVM thin pool pve/data 状态异常,错误信息: TASK ERROR: activating LV pve/data failed: Check of pool pve/data failed (status:1). Manual repair required! 风险提示&#xff1a…...

【谷歌内部培训材料流出】:Gemini与Workspace Admin Console深度绑定的5类企业级策略配置

更多请点击: https://intelliparadigm.com 第一章:Gemini与Workspace Admin Console深度集成的底层架构解析 Gemini 与 Workspace Admin Console 的深度集成并非简单的 API 调用叠加,而是基于统一身份上下文、双向实时状态同步和策略驱动控制…...

为Claude Code配置Taotoken解决账号被封与Token不足的烦恼

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为Claude Code配置Taotoken解决账号被封与Token不足的烦恼 对于依赖Claude Code进行编程辅助的开发者来说,直接使用官方…...

汽车存储技术演进:从边缘计算到车规级设计的核心挑战与选型指南

1. 汽车存储需求变迁:从机械心脏到数字大脑二十年前,我们选车看的是发动机的轰鸣、变速箱的平顺和底盘的扎实。如今,走进4S店,销售顾问会先带你坐进驾驶舱,点亮那块巨大的中控屏,演示语音助手、在线导航、高…...

【灶台导航】 RAG系统的容错设计:从向量搜索到关键词降级,一个都不能少

当三个外部依赖都可能随时挂掉时,如何保证用户永远有响应?问题:完美主义害死人 做RAG系统时,我们很容易陷入一种思维定势:向量检索要准、LLM要强、整个链路要丝滑。但现实是——任何一个外部服务挂了,用户就…...

别再手动点选了!用C#写个SolidWorks插件,一键智能识别并拉伸草图里的特定轮廓

用C#开发SolidWorks智能插件:一键识别并拉伸特定草图轮廓的工程实践 在机械设计领域,SolidWorks作为主流三维CAD软件,其草图绘制与特征创建是产品开发的基础环节。工程师们经常遇到这样的场景:复杂草图中包含多个相交轮廓&#xf…...

Next.js App Router 实战:从官方 Playground 探索现代 Web 开发最佳实践

1. 项目概述与定位最近在捣鼓 Next.js 的几个新特性,比如 Server Actions、并行路由、拦截路由这些,光看文档总觉得隔靴搔痒,想找个能上手实操、快速验证想法的环境。这时候,Vercel 官方维护的next-app-router-playground项目就成…...

AI辅助开发工作流:用免费代理优化付费工具,提升代码生成效率

1. 项目概述:用免费AI代理优化付费AI工具的开发工作流如果你和我一样,订阅了Claude Pro或者GitHub Copilot,但每个月看着额度条飞速见底,心里总有点发慌,那这篇文章就是为你准备的。我们不是在讨论哪个AI写代码更强&am…...