知识点解析

1.switch结构的核心概念
switch语句是一种多分支选择结构,它根据表达式的值来选择执行不同的代码块。与if-else结构相比,switch更适合处理离散的、有限个值的比较。

2.switch结构的基本语法

switch (表达式) {case1:// 代码块1[break;]case2:// 代码块2[break;]...[default:// 默认代码块]
}

3.switch结构的特点

  • 表达式类型:可以是byteshortcharintString(Java 7+)、枚举类型。
  • case值:必须是常量表达式,且不能重复。
  • break语句:用于跳出switch结构,防止"程序穿透"。
  • default语句:可选,用于处理所有未匹配的情况。

4. switch结构的执行流程

  1. 计算表达式的值
  2. 将表达式的值与每个case值进行比较
  3. 找到匹配的case后,执行对应的代码块
  4. 如果遇到break语句,则跳出整个switch结构
  5. 如果没有匹配的case,则执行default代码块(如果有)

5. switch结构的注意事项

  • case值必须是常量表达式(final变量或字面量)
  • case值不能重复
  • break语句是可选的,但通常需要
  • default语句是可选的,但建议保留

6.switch与if-else的区别

  • switch:适用于离散的、有限个值的比较,代码更清晰。
  • if-else:适用于范围判断或复杂条件判断。

案例解析

案例:基本switch结构

public class SwitchExample1 {public static void main(String[] args) {int day = 3;String dayName;switch (day) {case 1:dayName = "星期一";break;case 2:dayName = "星期二";break;case 3:dayName = "星期三";break;case 4:dayName = "星期四";break;case 5:dayName = "星期五";break;case 6:dayName = "星期六";break;case 7:dayName = "星期日";break;default:dayName = "无效的日期";}System.out.println("今天是:" + dayName);}
}

运行结果

今天是:星期三

代码解析

  • Java源文件保存为“SwitchExample1.java”。
  • 定义变量day并赋值为3。
  • 使用switch结构根据day的值输出对应的星期名称。
  • day为3时,匹配case 3,输出"星期三"。

案例:switch穿透

public class SwitchFallThrough {public static void main(String[] args) {int number = 2;String result;switch (number) {case 1:case 2:case 3:result = "小数字";break;case 4:case 5:case 6:result = "中数字";break;default:result = "大数字";}System.out.println("数字分类:" + result);}
}

运行结果

数字分类:小数字

代码解析

  • Java源文件保存为“SwitchFallThrough.java”。
  • 定义变量number并赋值为2。
  • 使用switch结构实现穿透(fall-through),多个case共享同一段代码。
  • number为2时,匹配case 2,由于没有break,继续执行case 3的代码,最终输出"小数字"。

案例:String类型的switch

import java.util.Scanner;public class StringSwitchExample {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入颜色(red/green/blue):");String color = scanner.nextLine();switch (color) {case "red":System.out.println("红色代表热情");break;case "green":System.out.println("绿色代表生机");break;case "blue":System.out.println("蓝色代表宁静");break;default:System.out.println("未知颜色");}}
}

运行结果

请输入颜色(red/green/blue):red
红色代表热情

代码解析

  • Java源文件保存为“StringSwitchExample.java”。
  • 使用Scanner获取用户输入的颜色字符串。
  • 使用String类型的switch结构根据颜色输出对应的描述。
  • 当输入"green"时,输出"红色代表热情"。

案例:枚举类型的switch

enum Season {SPRING, SUMMER, AUTUMN, WINTER
}public class EnumSwitchExample {public static void main(String[] args) {Season currentSeason = Season.SUMMER;String description;switch (currentSeason) {case SPRING:description = "万物复苏";break;case SUMMER:description = "烈日炎炎";break;case AUTUMN:description = "硕果累累";break;case WINTER:description = "白雪皑皑";break;default:description = "未知季节";}System.out.println(&#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85197.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85197.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/85197.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0开始学习R语言--Day27--空间自相关

有的时候,我们在数据进行分组时,会发现用正常的聚类分析的方法和思维,分组的情况不是很理想。其实这是因为我们常常会忽略一个问题:假设我们正在分析的数据是真实的,那么它也肯定在一定程度上符合客观规律。而如果我们…

Excel将表格文件由宽数据转为长数据的方法

本文介绍基于Excel软件的Power Query模块,实现表格数据由宽数据转为长数据的具体方法。 长数据和宽数据是数据分析中的2种基本数据组织形式,二者在结构、用途、适用场景等方面各有特点。其中,宽数据 (Wide Format)以“…

SpringAI + DeepSeek大模型应用开发 - 入门篇

三、SpringAI Spring AILangChain4jChat支持支持Function支持支持RAG支持支持对话模型1515向量模型1015向量数据库1520多模态模型51JDK178 1. 对话机器人 1.1 快速入门 步骤①:引入依赖(先去掉openai的starter依赖,因为要配置API_KEY&#…

ROS docker使用显卡驱动rviz gazebo,以及接入外设和雷达

ROS docker使用显卡驱动rviz gazebo,以及接入外设和雷达 由于我的电脑装ubuntu22.04系统,想使用ros noetic开发,使用鱼香ros一键安装docker安装。但是启动dockek中rviz无法使用显卡驱动,usb相机端口不显示,网口雷达无…

ruoyi后端框架的mapper层复杂字段数据获取问题

背景。如下是复杂字段。需要在mapper.java类注解中声明autoResultMap true才会进行处理。前提是,创建后端程序代码没有添加mapp.xml文件。故用注解简化代替。

产品推荐|一款具有单光子级探测能力的科学相机千眼狼Gloria 1605

在生命科学超分辨率成像、量子物理单光子探测、交叉领域单分子追踪等应用场景中,具有单光子级探测能力的科学相机是科学实验的关键设备。 千眼狼Gloria 1605采用16μm16μm大像元尺寸设计,基于Gpixel科学级背照式CMOS芯片,集成千眼狼底层图像…

JS.Day2-堆选(Py)/三路快排-快速选择-215,11,560,21,128,20,121

目录 215.找第k大元素 三路的快速排序 快速选择 法2.堆选 (堆排序) 11.盛更多水的容器 代码1 代码2 560.和为K的子数组(题意!) 惯性思维 正解 21.合并生序链表 递归写法 128.最长连续序列 20.有效的括号…

第8章 处理几何图形 面向 ArcGIS的Python脚本编程

一、折点坐标(.txt 或 .xlsx 或 .xls) > 点线面图层(.shp) (一).xlsx 或 .xls > .shp 新建一个文件夹,连接到该文件夹,并将其设置为工作空间 在该文件夹下,新建一个pts.xlsx的文件,并输入下图内容 …

使用(h3.js)绘制六角网格码

今天来记录一篇关于h3.js插件库的使用,他可以很高效的计算出地球上某个经纬度坐标六边形顶点。 前段时间领导突然给我个售前功能,要求是使用h3.js插件在地球上绘制出六边形网格码,本来以为挺棘手的,结果看完文档后发现也挺简单的…

GO 1.25

Go 1.25 发布说明(草案) Go 1.25 尚未发布。 本文档是正在编写中的发布说明。Go 1.25 预计于 2025 年 8 月发布。 语言变更 Go 1.25 中没有影响 Go 程序的语法变更。然而,在语言规范中,“核心类型”(core types&…

解析Android SETUP_DATA_CALL 链路信息字段

Android 对象返回的log信息经常都不是标准的JSON字符串,排查字段不直观,比如下面的日志: 06-13 15:56:36.204 8076 8407 D RILJ : [1655]> SETUP_DATA_CALL,reason=NORMAL,accessNetworkType=EUTRAN,dataProfile=[DataProfile=[ApnSetting] IMS, 2318, 310260, ims,…

跨语言RPC:使用Java客户端调用Go服务端的HTTP-RPC服务

在构建分布式系统时,实现不同编程语言之间的无缝通信是一个常见的需求。本文将详细介绍如何使用Go语言创建一个HTTP-RPC服务,并通过Java客户端进行远程调用。我们将探索整个过程,包括服务端的实现、客户端的编写以及测试验证。 一、背景介绍…

CVPR2024迁移学习《Unified Language-driven Zero-shot Domain Adaptation》

摘要 本文提出了一个名为 Unified Language-driven Zero-shot Domain Adaptation(ULDA)的新任务设置,旨在使单一模型能够适应多种目标领域,而无需明确的领域标识(domain-ID)知识。现有语言驱动的零样本领域…

AI安全风险监测平台:全周期防护体系构建

AI安全风险监测平台通过构建全生命周期防护体系,实现对人工智能系统研发、部署、运行、迭代各阶段的安全风险动态监测。该平台融合算法审计、行为分析、合规验证等核心能力,建立覆盖模型安全、数据安全、应用安全的立体防御网络,为智能系统提…

数据集-目标检测系列- 杯子 数据集 bottle >> DataBall

数据集-目标检测系列- 杯子 数据集 bottle >> DataBall 贵在坚持! * 相关项目 1)数据集可视化项目:gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview 2)数据集训练、推理相关…

视频点播web端AI智能大纲(自动生成视频内容大纲)的代码与演示

通过AI技术将视频课程自动生成结构化大纲和摘要,支持PPT教学视频、企业内训等场景应用。核心功能包括:自动匹配视频知识点生成文本大纲、快速内容定位、降低课程制作成本。系统采用模块化架构,包含Vue2.7前端组件、JS逻辑库和演示项目&#x…

Linux: errno: EINPROGRESS-115

在connect接口的使用说明里,有这个错误:EINPROGRESS。 The socket is nonblocking and the connection cannot be completed immediately. It is possible to select(2) or poll(2) for completion by selecting the socket for writing. After select(2…

Node.js特训专栏-基础篇:3. Node.js内置模块的使用

🔥 欢迎来到 Node.js 实战专栏!在这里,每一行代码都是解锁高性能应用的钥匙,让我们一起开启 Node.js 的奇妙开发之旅! Node.js 特训专栏主页 Node.js内置模块:强大功能的基石 在Node.js的世界里&#xff…

基于MATLAB实现的Capon、MUSIC、ESPRIT和PM算法进行DOA

使用Capon、MUSIC、ESPRIT和PM多种算法进行doa估计,通过谱峰搜索函数估计到达角,并使用蒙特卡洛方法估计各算法的RMSE。(可能计算时间较长,如需节省时间可以减小蒙特卡洛次数) PM.m , 574 RMSE.m , 274 TLS_ESPRIT.m …

某网站极验4滑块验证码逆向分析

文章目录 1. 写在前面2. 接口分析3. w逆向分析4. JSON参数分析5. 距离识别6. RSA纯算还原7. AES纯算还原【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于…