Java switch case 语句

2023-11-19

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 语句,我们可以提高代码的可读性和可维护性,从而提高程序的质量和效率。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java switch case 语句 的相关文章

  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List

随机推荐

  • c++——static总结

    前言 经过static修饰的变量 存储在内存的全局静态区 且被static修饰的变量只能在本模块的所有函数引用 内存中的存储区域如下 堆区 是由程序员手动申请 new 与释放 delete 的内存区域 从低地址向高地址申请 内存空间大 存储
  • 用户登录测试用例

    谈起用户登录的测试用例 试问有没有在面试测试职位的时候 经常被面试官问到或者是在笔试题上会让你回答 你当时的回答全面了吗 你对自己的答案给多少分呢 然而这只是面试而已 在工作中你的测试用例写得怎么样 有没有考虑全面呢 前几天网上报了一门课程
  • GBT9706.1中B型BF型和CF型各表示什么意思?多参监护仪设计

    1 GBT9706 1中B型BF型和CF型各表示什么意思 代表的是根据与患者接触的部件的电击防护分类 F代表floating绝缘 有很高的保护要求 低漏电流 B代表身体Body C代表心脏cardiac B类设备 具有特定程度电击防护的设备
  • Linux 编译安装中的 configure 命令

    用了这么久的 Linux 系统 也许你会发现 在编译安装中 有的服务编译安装需要执行 configure 命令 而有的却不需要 这是为什么呢 也是不是像我一样一头雾水呢 其实这取决于服务的构建系统和配置方式 以下是两个常见情况 自动配置系统
  • Keil编译完成后出现的程序大小说明

    Keil编译完成后出现的程序大小说明 Code 代表执行的代码 程序中所有的函数都位于此处 也可认为是程序所占用的FLASH大小 存储在FLASH中 RO data Read only data 代表只读数据 程序中所定义的全局常量数据和字
  • OpenStack--创建虚拟机

    启动虚拟机之前需要先做一些前期准备 比如网络和 IP 地址分配 虚拟机 类型创建等等 具体如下 1 网络规划及 IP 划分 官网安装文档 https docs openstack org ocata zh CN install guide
  • 今天我们来聊一聊孟德尔随机化

    欢迎关注 生信修炼手册 在传统的实验设计中 由于种种混杂因素的存在 我们仅仅能够分析变量之间的关联性 最典型的比如GWAS 对于显著的位点 只能够说明这些位点和性状之间存在关联 对于了解事情发生的原因和规律而言 关联性是不够的 我们需要的是
  • 【Excel】工作中会用到的excel操作和技巧

    最近入职培训 接受了一些企业文化的洗脑课 不过也有一些是很有实际应用的课程 比如excel操作和技巧 现将自己觉着很有用的地方总结如下 1 基础性操作与技巧 说在前面 一个好的工作表格 需要主要以下几点 首行首列要留白 外边框要加粗 字体字
  • php企业微信通讯录同步设置接收事件服务器

    第一步登陆企业微信pc端管理后台设置好信息 先不要点击保存 会提示失败 随后根据填写的URL编写接口 接口代码如下 就是第一步图中的token token xxx 就是第一步图中的EncodingAESKey encodingAESKey
  • msys2下gtk或qt程序的打包

    1 编译x64的程序 从win10的开始菜单中打开MSYS2 MinGW x64命令行 使用cd命令切换到二进制程序exe所在目录 2 执行如下命令 最后一个参数是当前文件存放dll 可以自定义一个新的文件夹 拷贝起来方便 ldd exe
  • 使用Visual Studio 2019和IntelliJ IDEA 2018实现JAVA调用本地代码

    使用Visual Studio 2019和IntelliJ IDEA 2018实现JAVA调用本地代码 1 我们使用的工具是 IntelliJ IDEA 2018 编写java代码 和VisualStudio 2019 编写Native方法
  • 关于“system”: 找不到标识符 的问题

    关于 system 找不到标识符问题和 包括 排除 设置禁用了加载功能的问题 这个问题主要是使用system pause 时造成的 可以删除或者注释这个语句试试 解决办法 1 添加头文件stdlib h 2 添加iostream h 另外
  • ld_preload

    gdb调试包含共享库代码的程序 shell export LD PRELOAD 相信有不少的同志调试过包含共享库代码的程序 这个时候最为头疼的就是不能进行单步跟踪 当然是在你不知道如何解决的情况下 本文根据一个实例来讲述如何来解决这个问题
  • C++Primer(第五版 )第十三章 拷贝控制 章节编程练习答案

    13 1 拷贝构造函数是什么 什么时候使用它 答 如果一个构造函数的第一个参数是自身类类型的引用 且任何额外参数都有默认值 则此构造函数是拷贝构造函数 当使用拷贝初始化时 我们会用到拷贝构造函数 13 2 解释为什么下面的声明是非法的 答
  • JS字符串转换为JSON的四种方法

    JS字符串转换为JSON的四种方法 1 jQuery插件支持的转换方式 示例 parseJSON jsonstr jQuery parseJSON jsonstr 可以将json字符串转换成json对象 2 浏览器支持的转换方式 Firef
  • 批量获取文件的摘要(md5、sha1、sha256)

    批量获取文件的摘要 md5 sha1 sha256 0x01 功能 0x02源码 0x03运行 0x01 功能 刚刚写了一个小工具 用于批量获取文件的摘要 md5 sha1 sha256 具体用法 gt gt gt gt python3 g
  • 文件服务器中按用户查询文件夹权限,服务器文件夹权限设置

    服务器文件夹权限设置 内容精选 换一换 该任务指导用户使用Loader将数据从SFTP服务器导入到HBase 创建或获取该任务中创建Loader作业的业务用户和密码 确保用户已授权访问作业执行时操作的HBase表或phoenix表 获取SF
  • PO模式+数据驱动(TPshop网站的登录模块进行单元测试以及区分正向逆向用例)

    一 区分正向逆向用例 思路 在测试数据中添加一一个标识正向用例或逆向用例的标记 如 True False 步骤 调用登录方法 此登录方法中 只有输入用户名 输入密码 输入验证码 点击登录按钮 判断用例标记 判断安全退出是否存在 点击安全退出
  • 玩转 gpgpu sim 01记 —— try it

    1 短介绍 gpgpu sim 是一个gpu模拟器 可以让cuda openCL程序运行在一个软件模拟器上 而不需要硬件GPU 2 目标 用最简单省事的方式跑通一个gpgpu sim的仿真 3 gpgpu sim 一点项目特性 开发比较早
  • Java switch case 语句

    Java 的 switch case 语句是一种常用的控制流语句 用于基于不同的输入值执行不同的操作 本文将详细介绍 Java switch case 语句的作用 用法以及在实际工作中的应用 一 switch case 语句的作用 swit