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

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 语句在实际工作中具有广泛的应用。下面是一些示例:

  1. 根据用户的输入执行不同的操作。 例如,在一个简单的计算器程序中,我们可以使用 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");}
    }
    

  2. 根据不同的状态执行不同的操作。 在一个状态机或状态模式中,我们可以使用 switch case 语句根据不同的状态执行不同的操作。例如,我们可以定义不同的状态,例如 "开机"、"待机"、"关机" 等,然后根据不同的状态执行不同的操作。
    public void handleState(State state) {switch(state) {case ON:// 执行开机操作break;case STANDBY:// 执行待机操作break;case OFF:// 执行关机操作break;default:throw new IllegalArgumentException("Invalid state");}
    }
    

  3. 根据不同的类型执行不同的操作。 在一些代码中,我们需要根据不同的类型执行不同的操作。例如,我们可以根据文件的扩展名执行不同的操作。下面是一个示例:
    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)、所有的覆写方法&#xff0…...

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函数原型&#xff1a;包含在头文件<sys/time.h>&#xff0c;<sys/types.h>和<unistd.h>int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);作用&#xff1a;确定…...

DC-4 靶场学习

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

QML组件

一个QML文件定义了一个独立的、顶级的QML组件。 一个QML组件就是一个模板&#xff0c;被QML运行环境解释来创建一个带有一些预定义行为的对象。 一个独立的QML组件可以运行多次来禅城多个对象&#xff0c;每个对象都可以称为该组件的实例。 例子&#xff1a; 在项目中添加一…...

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…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...