Java基础学习篇:switch条件语句进阶(最详细版)

news2024/9/23 16:08:11

🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝

🥇博主昵称:小菜元

🍟博客主页:小菜元

🥗感谢点赞👍评论🃌

⚇很方便的在线编辑器:Lightly

让我们一起在写作中记录学习吧!

目录

switch使用目的

switch语句的形式

switch语句的注意要点(重点)


switch使用目的

在我们需要通过选择来输出指定内容时(例如:输入1就输出星期一,输入3就输出星期三)这个时候很多初学者都会选择if...else语句来实现,但是这样会导致编写过程冗杂,使得程序执行复杂,为避免这种问题出现,我们可以选择switch条件语句来实现这个内容

switch语句的形式

public class Test{
    public static void main(String[] args){
        switch(a){
            case b:        //判断b与a是否相等
                            //输出语句执行输出内容
            case c:
                break;    //结束执行
            default:        //加上结束语句
        }
    }
}
            
           
   

以上就是switch的形式,在switch语句中,a的表达式的类型必须是与int类型兼容的基本形式,就是能自动转化为int类型,因此他的合法类型包括:byte、short、char、int类型(从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量)【每个case后的变量不能相同(称呼:为了便于表述,将switch后的变量成为switch表达式,case后的变量表达式,即a为switch的表达式】

PS:当然变量也可以是枚举类型

switch语句的注意要点(重点)

  1. 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句
  2. 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句(也就是执行了break后直接结束语句)
  3. switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句
    public class Test {
       public static void main(String args[]){
          int i = 5;
          switch(i){
             case 0:
                System.out.println("0");
             case 1:
                System.out.println("1");
             case 2:
                System.out.println("2");
             default:
                System.out.println("default");
          }
       }
    }
    public class Test {
       public static void main(String args[]){
          int i = 5;
          switch(i){
             case 0:
                System.out.println("0");
             case 1:
                System.out.println("1");
            default:
                System.out.println("default");
          
             case 2:
                System.out.println("2");
             }
       }
    }

    上述两段代码表示含义相同!

  4. 如果 case 语句块中没有 break 语句时,JVM 并不会顺序输出每一个 case 对应的返回值,而是继续匹配,匹配不成功则返回default内容(3表述结果可表达次内容)
  5. 如果switch表达式与某个case表达式匹配或者是与default匹配时就从这个case表达式或者是default开始执行,遇到break即结束,否则就继续执行case后的句子,不检查case表达式的值(case表达式的定义在上方已阐述)
    public class Test {
        public static void main(String[] args){
            int x = 4;
            switch(x){
                default:System.out.println("直接输出");
                case 1:System.out.println("测试1");
                case 2:System.out.println("222");break;
                case 3:System.out.println("我是3");
    
            }
        }
    
    }
    

  6. PS:那就有朋友会问了,如果我后面的case表达式有了对应的值那么我执行顺序是什么呢?答案其实很简单,就是有对应先执行对应

  7. 一般情况下,每个case语句都应该对应一个break以便推出switch语句,但是如果多个表达式对应相同的流程分支就可不必使用
    public class Test {
        public static void main(String[] args){
            int x = 2;
            switch(x){
                case 1:System.out.println("测试1");
                case 2:
                case 3:
                case 4:System.out.println(11);  //即case值为234都执行次代码
    
            }
        }
    
    }

    使用整数或者String操作数的switch表达式必须要有default,因为无论操作数值是什么,表达式都要生成一个值

  8. PS:每个case语句一定要加break来终止执行,否则它将会继续执行知道default结束,导致出现大问题!

  9. 今天的java学习就到此结束了!希望大家能够掌握switch条件语句!

  10. ​​​​​​​

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【KivyMD 应用程序 1.1.1】Icons在应用设计中的魅力

图标,这些小小的视觉元素,拥有不可思议的力量,能够跨越语言和文化的障碍,传达丰富的信息。在数字时代,图标的设计和应用已经成为界面设计不可或缺的一部分,而Material Design Icons则是这个领域的佼佼者。 Material Design Icons源自Google的Material Design语言,旨在创…

剑指offer 30. 包含min函数的栈

目录 原题链接 题目描述 解决方案 思路分析 核心思路 流程图解 操作细节 代码实现 Python 语言实现 C 语言实现 Java 语言实现 复杂度分析 总结 其他相似题目 原题链接 剑指offer_在线编程_牛客网 (nowcoder.com) 题目描述 定义一个栈的数据结构,并…

20240823给飞凌OK3588-C的核心板刷Ubuntu22.04并成功启动

20240823给飞凌OK3588-C的核心板刷Ubuntu22.04并成功启动 2024/8/23 20:37 给飞凌OK3588-C的核心板刷Ubuntu22.04,不管是预编译的,还是你自己直接编译的IMG固件。 放心,都会卡死在这里的!^_ [BEGIN] 2024/8/23 20:10:55 DDR V1.12…

使用pyevtk导出结构化VTK网格以供后处理

pyevtk简介 在计算流体力学CFD中,通常需要处理三维网格数据,为了可视化,需要将其输出。本文介绍使用python的pyevtk库输出结构化网格,以供paraview进一步后处理。 代码 # ***************************************************…

LeetCode.209.长度最小的子数组

题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 输入输出实例…

【问题记录】mysql报错 ,mysql2 和 mysql 5.

错误2 和 错误5 都是由于注册表有问题: 由于我之前安装过MySQL,导致之前的配置没有删除。 解决: 搜索打开注册表编辑器: 注册表中找到MySQL: 修改路径: "D:\develop\mysql-8.0.39-winx64\bin\mysqld&quo…

基于Prometheus的HPA自动伸缩

基于Prometheus的HPA自动伸缩 背景 Kubernetes集群规模大、动态变化快,而且容器化应用部署和服务治理机制的普及,传统的基础设施监控方式已经无法满足Kubernetes集群的监控需求 需要使用专门针对Kubernetes集群设计的监控工具来监控集群的状态和服务质量…

python脚本:输入基因名,通过爬虫的方式获取染色体上的location。

本团队提供生物医学领域专业的AI(机器学习、深度学习)技术支持服务。如果您有需求,请扫描文末二维码关注我们。 python脚本:输入基因名,通过爬虫的方式获取染色体上的location。 def get_gene_location(gene_symbol):…

HDR以及CIS各厂家HDR方案

一.序言 为拥有更高动态范围,研究同仁们想出各种办法和策略,硬件和软件上都在快速更新迭代。 今天我们走进HDR ,明白什么是HDR,以及各种各样的HDR方案。 二.什么是HDR 讲一堆描述不如直接看公式 从公式可知传感器的满阱容量与暂态噪声的比值决定DR, 也可以认为TN为传…

进阶-4.视图、存储过程、存储函数、触发器

视图、存储过程、存储函数、触发器 1.视图1.1 介绍1.2 语法1.3 视图的检查选项1.4 视图的更新1.5 视图作用1.6 案例 2.存储过程21. 介绍2.2 特点2.3 语法2.4 变量2.4.1 系统变量2.4.2用户自定义变量2.4.3 局部变量 2.5参数2.6条件语句2.6.1 if 语法2.6.2 case 2.7循环结构2.7.1…

以GD32F103C8T6为例的核心板原理图PCB绘制学习笔记简单总结

目录 GD32F103C8T6核心板 设计流程 基础知识 部分原理图解析 排针连接 (H1 - PZ254V-12-8P): 晶振 封装 基础知识 C0603封装 C0805 F1210封装 保险丝 L0603 贴片电感 LED-0603 R0603 HDR-TH_8P-P2.54-V-M-R2-C4-S2.54 排针 按键(SW-SMD-T6X…

解决Java使用Jsoup后台调用天地图地理编码接口的几个问题

目录 前言 一、天地图的地理编码接口 1、相关的API介绍 2、响应接口 二、使用JSOUP调用相应接口面对的问题及应对 1、第一关访问路径的问题 2、第二关UnsupportedMimeTypeException 3、可能的http获取403问题 三、总结 前言 如果你现在的项目中有如下的需求,…

在pytorch中TensorBoard的使用

from torch.utils.tensorboard import SummaryWriter# writer的使用 # 创建实例 writer SummaryWriter("logs") # 存储位置在logs # 使用如下的两种方法 # writer.add_image() # 标量for i in range(100):writer.add_scalar("y x", i, i)writer.close() …

力扣 | 最长公共子序列 | 动态规划 | 最长公共子序列长度、最长公共子序列

文章目录 一、1143. 最长公共子序列二、求最长公共子序列三、变式一、1035. 不相交的线二、1312. 让字符串成为回文串的最少插入次数 一、1143. 最长公共子序列 LeetCode:1143. 最长公共子序列 这是一道典型的二维动态规划问题,甚至面试都能被面到。 这…

机器人开发--Pure Pursuit纯追踪介绍

机器人开发--Pure Pursuit纯追踪介绍 1 介绍1.1 概述1.2 发展历史1.3 EKF vs MPC vs Pure Pursuit1.4 PP 前探距离的影响 2 理解普渡大学--control-algorithms/basic-pure-pursuit准备导入必要的库什么是 Pure Pursuit 控制器?限制如何工作线圆交点线圆交点与边界选…

JUC-Synchronized原理进阶

轻量级锁 轻量级锁的使用场景:如果一个对象虽然有多线程要加锁,但加锁的时间是错开的(也就是没有竞争),那么可以使用轻量级锁来优化。轻量级锁对使用者是透明的,即语法仍然是 synchronized 假设有两个方法同…

机器学习:opencv图像识别--图片专项

目录 前言 一、读取图片 1.安装opencv库 2.读取彩色图片 3.读取灰度图 二、RGB 1.RGB的概念 2.颜色通道: 3.图像表示 4.代码实现单通道图像 三、ROI 1.代码实现 四、图片打码 五、图片组合 六、图片缩放 总结 前言 OpenCV(Open Source C…

Linux:Linux多线程

目录 线程概念 什么是线程 二级页表 线程的优点 线程的缺点 线程异常 线程用途 Linux进程VS线程 进程和线程 进程的多个线程共享 进程和线程的关系 Linux线程控制 POSIX线程库 线程创建 线程等待 线程终止 分离线程 线程ID及进程地址空间布局 线程概念 什么…

【CAN总线测试】——CAN数据链路层测试

从0开始学习CANoe使用 从0开始学习车载测试 相信时间的力量 星光不负赶路者,时光不负有心人。 目录 2.1.位时间 2.2.采样点测试 2.3.CAN报文ID和DLC一致性检查 2.4.预期帧接收测试 2.5.非预期帧接收测试 2.6.总线负载率 1.位时间 用例编号 TG2_TC1 测试目…

android aar适配uniapp

最近有商户需要接入我们sdk,但是我们都是android或者ios原生的,直接用又不能用,需要做适配,本文就教你一步步实现android aar适配uniapp。 官方参考教程:开发者须知 | uni小程序SDK 但是官方写的比较繁琐,好…