Java switch case 语句
Java 的 switch case 语句是一种常用的控制流语句,用于基于不同的输入值执行不同的操作。本文将详细介绍 Java switch case 语句的作用、用法以及在实际工作中的应用。
一、switch case 语句的作用 switch case 语句是一种多分支条件语句,它基于不同的输入值,执行不同的操作。switch case 语句通常用于替代一系列的 if else 语句,以提高代码的可读性和可维护性。当需要处理多个不同的情况时,使用 switch case 语句可以使代码更加简洁,也更易于理解。
二、Java switch case 语句的用法 Java 的 switch case 语句由 switch 关键字、一个括号和一个或多个 case 语句组成。下面是一个简单的示例:
public class SwitchDemo {public static void main(String[] args) {int num = 3;switch (num) {case 1:System.out.println("One");break;case 2:System.out.println("Two");break;case 3:System.out.println("Three");break;default:System.out.println("Not found");}}
}
在上面的示例中,我们使用了一个整数变量 num,然后根据 num 的不同取值,执行不同的操作。在 switch 关键字后面的括号中,我们指定了要比较的变量 num。然后,在花括号中,我们列出了多个 case 语句。每个 case 语句都包含了一个常量值和一系列要执行的操作。如果变量 num 的值与某个 case 语句中的常量值相等,那么该 case 语句中的操作就会被执行。如果没有找到与变量 num 匹配的 case 语句,那么就会执行默认的操作。
在 switch case 语句中,每个 case 语句都必须以 break 语句结束。这是因为如果没有 break 语句,程序将会继续执行下一个 case 语句,这可能会导致意外的结果。例如,如果我们省略上面示例中的 break 语句,那么将会打印出以下结果:
Three
Not found
因为当 num 的值为 3 时,它既符合 case 3 中的条件,也符合默认条件。
除了使用 break 语句之外,我们还可以使用 return 语句、throw 语句和 continue 语句来结束一个 case 语句。
三、在实际工作中的应用 switch case 语句在实际工作中具有广泛的应用。下面是一些示例:
- 根据用户的输入执行不同的操作。 例如,在一个简单的计算器程序中,我们可以使用 switch case 语句根据用户的输入执行不同的计算操作。例如,如果用户输入了加法操作,我们可以执行相应的代码,如果用户输入了减法操作,则执行相应的代码。
public static void calculate(int num1, int num2, String operator) {switch(operator) {case "+":System.out.println(num1 + num2);break;case "-":System.out.println(num1 - num2);break;case "*":System.out.println(num1 * num2);break;case "/":System.out.println(num1 / num2);break;default:System.out.println("Invalid operator");} }
- 根据不同的状态执行不同的操作。 在一个状态机或状态模式中,我们可以使用 switch case 语句根据不同的状态执行不同的操作。例如,我们可以定义不同的状态,例如 "开机"、"待机"、"关机" 等,然后根据不同的状态执行不同的操作。
public void handleState(State state) {switch(state) {case ON:// 执行开机操作break;case STANDBY:// 执行待机操作break;case OFF:// 执行关机操作break;default:throw new IllegalArgumentException("Invalid state");} }
- 根据不同的类型执行不同的操作。 在一些代码中,我们需要根据不同的类型执行不同的操作。例如,我们可以根据文件的扩展名执行不同的操作。下面是一个示例:
public static void openFile(File file) {String extension = getFileExtension(file.getName());switch(extension) {case "txt":// 打开文本文件break;case "jpg":case "png":// 打开图像文件break;case "pdf":// 打开 PDF 文件break;default:throw new IllegalArgumentException("Unsupported file extension");} }private static String getFileExtension(String filename) {int dotIndex = filename.lastIndexOf(".");if(dotIndex == -1) {return "";}return filename.substring(dotIndex + 1); }
在上面的示例中,我们根据文件的扩展名执行不同的操作。如果扩展名为 "txt",则打开文本文件;如果扩展名为 "jpg" 或 "png",则打开图像文件;如果扩展名为 "pdf",则打开 PDF 文件。如果扩展名不是上述任何一种,就会抛出 IllegalArgumentException 异常。
总结: 在本文中,我们详细介绍了 Java switch case 语句的作用、用法以及在实际工作中的应用。switch case 语句是一种多分支条件语句,用于基于不同的输入值执行不同的操作。它可以替代一系列的 if else 语句,以提高代码的可读性和可维护性。在实际工作中,switch case 语句可以用于根据用户的输入执行不同的计算操作、根据不同的状态执行不同的操作以及根据不同的类型执行不同的操作。当然,switch case 语句也存在一些限制,例如它只能处理相等比较,不能处理范围比较,且每个 case 分支必须以 break 或 return 结束,否则会出现错误。因此,在使用 switch case 语句时,需要注意这些限制,以确保程序的正确性和可靠性。
总之,Java switch case 语句是一种非常实用的多分支条件语句,可以帮助我们根据不同的输入值执行不同的操作。通过合理的使用 switch case 语句,我们可以提高代码的可读性和可维护性,从而提高程序的质量和效率。
相关文章:
Java switch case 语句
Java 的 switch case 语句是一种常用的控制流语句,用于基于不同的输入值执行不同的操作。本文将详细介绍 Java switch case 语句的作用、用法以及在实际工作中的应用。 一、switch case 语句的作用 switch case 语句是一种多分支条件语句,它基于不同的输…...

Linux下MQTT客户端消息订阅与发布实现
MQTT(消息队列遥测传输)是一个基于客户端-服务器的消息发布/订阅传输协议。它基于TCP协议,默认端口号为1883,为此,它也需要一个消息中间件 。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下…...

代码规范----编程规约(下)
目录 四、OOP规约 五、日期时间 六、集合处理 四、OOP规约 (1)、避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可 (2)、所有的覆写方法࿰…...

c++连接mysql
开始想用mysql connector/c8.0 来操作数据库cmake加上配置后一直编译错误 我这里也没有截屏编译错误大概意思是driver.h里面声明的一个check_lib函数里面用了一个未定义的check找遍了资料都没有找到解决办法最后还是用了原始API如果有人有解决办法请留个位置先上在用的cmake配置…...

CentOS7操作系统安装nginx实战(多种方法,超详细)
文章目录前言一. 实验环境二. 使用yum安装nginx2.1 添加yum源2.1.1 使用官网提供的源地址(方法一)2.1.2 使用epel的方式进行安装(方法二)2.2 开始安装nginx2.3 启动并进行测试2.4 其他的一些用法:三. 编译方式安装ngin…...

【测绘程序设计】——空间直角坐标转换
测绘工程中经常遇到空间直角坐标转换——比如,北京54(或西安80)空间直角坐标转换成CGCS2000(或WGS-84)空间直角坐标,常用转换模型包括:①布尔沙模型(国家级及省级范围);②莫洛坚斯基模型(省级以下范围);③三维四参数(小于22局部区域) 等。 本文分享了基于布…...

数组--java--动态数组--有序数组--底层
java数组基础--java中的数组创建数组空间占用初始化数组访问元素插入查找删除元素动态数组扩容插入和添加重写toString删除二维数组二维数组注意点有序数组实现测试写在开头: 这篇文章包括数组的基础、一点底层的内容和一些稍微深入的东西。 作为第一个深入学习的数…...

Linux下使用C语言实现简单的聊天室程序
本文章介绍一种基于Linux使用C语言实现简单的局域网聊天室程序的方法,支持消息群发,历史数据查询,好友列表查看,好友上线下线提醒等功能。聊天界面如下图所示:下面将按步骤介绍该系统的设计实现,首先在linu…...
【数学】任意一个正整数n最多只有一个质因数大于根号n,怎么证明?
定理 任意一个正整数n最多只有一个大于n\sqrt{n}n的质因子,并且该大于n\sqrt{n}n质因子的幂次是1。 证明(反证法) 证明:最多只有一个大于n\sqrt{n}n的质因子 假设n存在两个大于n\sqrt{n}n的质因子,分别为p…...
【ES6】var let const 之面试题系列
关于 var、let、const 是前端开发人员经常用到的关键字,也是经典的面试题,接下来就站在面试题的角度来看待它们之间的区别。 一、区别 1. var 声明的范围是函数作用域,let 和 const 声明的范围是块作用域,块作用域是函数作用域的…...

Vue基础入门讲义(四)-组件化
文章目录1.引言2.定义全局组件3.组件的复用4.局部注册5.组件通信5.1.父向子传递props5.2.传递复杂数据5.3.子向父的通信1.引言 在大型应用开发的时候,页面可以划分成很多部分。往往不同的页面,也会有相同的部分。例如可能会有相同的头部导航。 但是如果…...

Android onLayout布局流程解析
组件布局流程结论 1.)layout流程始于ViewRootImpl的performLayout()方法,该方法会调用根View(DecorView)的layout()方法进行布局,因为DecorView是ViewGroup(FrameLayout),所以layout流程来到了ViewGroup(其…...

浅分析BIG-建筑展示系统
一、主页(主要界面)重点疑点(需要解决)1.云平台实时同步。是否可以电脑与hololens2同步或链接?并可以传输信息提醒?一级界面(启动界面)1.交互式启动激活效果(触发按钮旋转…...

模电基础(1) 半导体基础知识
基本内容: 1.本征半导体的基本介绍结构; 2.杂质半导体; 3.PN结的形成; 4.PN结的性质。 1.本征半导体 半导体:导电性能介于绝缘体和导体之间的物质。 本征半导体是纯净的晶体结构的半导体。 纯净→无杂质晶体结构→稳…...
阅读笔记:TF - IDF 原理
今天查阅 TF-IDF 资料,发现百度百科里面提供了一个例子,解释的很清楚,记下来备用。 原文链接:https://baike.baidu.com/item/tf-idf/8816134?fraladdin 例子:在某个一共有一千词的网页中 “原子能”、“的” 和 “应…...

【C语言】float 关键字
🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4…...
Linux 网络编程(实现多路IO转接服务器)
1.select函数实现多路IO转接服务器select函数原型:包含在头文件<sys/time.h>,<sys/types.h>和<unistd.h>int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);作用:确定…...

DC-4 靶场学习
信息搜集: 首先获取靶场ip,和之前一样。 arp-scan -l nmap -sP 192.168.28.0/24然后访问。 发现需要登录。 漏洞分析: 直接用bp爆破,爆破出来密码为happy,登录。 发现执行了命令,抓包。 修改命令可以执行ÿ…...

QML组件
一个QML文件定义了一个独立的、顶级的QML组件。 一个QML组件就是一个模板,被QML运行环境解释来创建一个带有一些预定义行为的对象。 一个独立的QML组件可以运行多次来禅城多个对象,每个对象都可以称为该组件的实例。 例子: 在项目中添加一…...
canvas 学习指南
canvas 学习指南 创建一个 canvas <! DOCTYPE html><html xmlns"http://www.w3.org/1999/xhtml"><head><title></title><meta charset"utf-8" /><script type"text/javascript">window.onload fun…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...