JAVA switch case 穿透问题

news2025/1/11 7:05:16

1,前提

其实开发中很少会用到switch ,一般更倾向于if-else,
但是最近接手的项目,前人写的代码都用switch ,
但是我一直以来对switch 的理解就跟if一样,
然后项目运用的时候才发现这玩意居然还有穿透问题

2,实践

    public static void main(String[] args) {
        String SCORE= "A";
        switch (SCORE) {
            case "A":
                System.out.println("优");
            case "B":
                System.out.println("良");
            case "C":
                System.out.println("中");
            default:
                System.out.println("不及格");
        }
    }

当看到上面代码的时候,我下意识觉得应该会输出

但是实际上

在这里插入图片描述

而这就是case的穿透现象

3,总结

case穿透:在switch语句中,如果case控制的语句体后面不写break,将出现穿透现象,在不判断下一个case值的情况下,向下运行,直到遇到break,或者整体switch语句结束。

如果想要避免穿透问题,每个case后面一定要加上break ;

正确如下:

    public static void main(String[] args) {
        String SCORE= "A";
        switch (SCORE) {
            case "A":
                System.out.println("优");break;
            case "B":
                System.out.println("良");break;
            case "C":
                System.out.println("中");break;
            default:
                System.out.println("不及格");
        }
    }

当然,我们也可以根据自己的需求善用break

不知道有没有人思考过为什么不用 continue 做结束呢?

其实我也试了一下,

提示continue只能用在循环语句里,而 switch 并不是循环

4,思考

下面代码最后输出结果是什么????


    public static void main(String[] args) {
        String SCORE= "A";
        switch (SCORE) {
            case "A":
                System.out.println("优");break;
            case "B":
                System.out.println("良");
            case "C":
                System.out.println("中");
            default:
                System.out.println("不及格");
        }
    }

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

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

相关文章

python 模块openpyxl 读取写入.xlsx文件

Python操作Excel的模块有很多,并且各有优劣,不同模块支持的操作和文件类型也有不同。下面是各个模块的支持情况: xlrd:xlrd 读取.xls文件xlwings:xlwings 读取写入Excel文件xlwt:xlwt 写入.xls文件 一、…

Springboot集成RocketMQ——简单使用

目录 1.MQ选型 2.RocketMQ基本架构 3.Springboot集成RocketMQ 4.顺序消息 5.延时消息 6.事务消息 1.MQ选型 目前市面上的MQ选型:主要分为3个类型 Kafka:吞吐量大,且性能好,集群高可用;会丢失数据,功…

Linux安装FileBrowser(简洁版)

项目简介安装目录 mkdir -p /opt/filebrowser/data && cd /opt/filebrowser 安装包下载 wget https://github.com/filebrowser/filebrowser/releases/download/v2.24.2/linux-amd64-filebrowser.tar.gz 注意:https://github.com/filebrowser/filebrowser/re…

Django(5)-视图函数和模板渲染

Django 中的视图的概念是「一类具有相同功能和模板的网页的集合」 在我们的投票应用中,我们需要下列几个视图: 问题索引页——展示最近的几个投票问题。 问题详情页——展示某个投票的问题和不带结果的选项列表。 问题结果页——展示某个投票的结果。 投…

vr内容编辑软件降低了虚拟现实项目开发门槛

VR虚拟场景编辑器是一种专门用于创建、修改和设计虚拟场景的工具。它利用vr虚拟现实技术,让用户可以在三维空间中直接对场景进行操作和编辑。这种编辑器的出现,使得用户可以更加直观、自由地进行场景设计和制作,为诸多领域带来了新的可能性。…

Qt串口通信学习文档

这是官方文档,我也在学习。 QSerialPort Class | Qt Serial Port 5.15.14https://doc.qt.io/qt-5/qserialport.html

AIGC 图表可视化案例实操

AIGC ChatGPT 对于职场办公提高办公效率那是肯定的。例如做数据分析与可视化如下图: 做这样的一个图表可视化分析,我们会用到HTML ,JS,Echarts。 但是代码测试起来,与调试比较费时间,所以我们可以让AIGC …

前端需要理解的跨平台知识

混合开发是指使用多种开发模开发App的一种开发模式,涉及到两大类技术:原生 Native、Web H5。原生 Native 主要指 iOS(Objective C)、Android(Java),原生开发效率较低,开发完成需要重…

Metasploit提权

一、bypassuac 用户账户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也…

编写c语言程序调用openssl编译出的动态链接库

文章目录 一、编译生成链接库二、示例一:调用RAND_bytes函数三、示例二:调用SHA256 一、编译生成链接库 下载安装openssl并编译生成链接库的过程在我的另一篇文章中已经详细说明了:Ubuntu中安装OpenSSL 此外,我们还需要提前了解…

Android studio之GridView使用

目录 效果图:![在这里插入图片描述](https://img-blog.csdnimg.cn/86e4a48a71164dec82613d58b1fbaa1c.jpeg)代码: 效果图: 代码: UserGridviewAdapter package com.example.gridviewpro.Adapter;import android.content.Contex…

Python练习 函数取列表最小数

练习2:构造一个功能函数,可以解决如下问题: 要求如下: 1,任意输入一个列表,函数可以打印出列表中最小的那个数, 例:输入: 23,56,67,4,17,9 最小数是 :4 方法一: #内置函…

AURIX TriCore内核架构学习笔记

名词缩写 ISA - Instruction Set Architecture,指令集架构PC - Program Counter, holds the address of the instruction that is currently runningGPRs - 32 General Purpose RegistersPSW - Program Status WordPCXI - Previous Context InformationCSA - Conte…

C语言练习2(巩固提升)

C语言练习2 选择题 前言 “志之所趋,无远弗届,穷山距海,不能限也。”对想做爱做的事要敢试敢为,努力从无到有、从小到大,把理想变为现实。要敢于做先锋,而不做过客、当看客,让创新成为青春远航的…

word电子报刊制作过程

随之网络的迅猛发展,利用计算机排版技术编辑制作电子报刊也很普及了。这里教大家如何将WODR转换成翻页的电子报刊 我们可以使用FLBOOK制作电子报刊,操作很简单 1.搜索FLBOOK制作电子杂志平台 2.点击登录与注册,可支持QQ、微信登录 3.现在点击…

Unity中的数学基础——贝塞尔曲线

一:前言 一条贝塞尔曲线是由一组定义的控制点P0到 Pn,n1为线性,n2为二次......第一个和最后一个控制点称为起点和终点,中间的控制点一般不会位于曲线上 获取两个点之间的点就是通过线性插值( Mathf.Lerp&#xff09…

C++信息学奥赛1127:图像旋转

这段代码的功能是输入一个二维数组 arr&#xff0c;然后按列逆序输出该数组的元素。 #include<iostream> #include<cmath> #include <iomanip> using namespace std; int main() {int n,m; // 定义变量n和m&#xff0c;表示数组的行数和列数cin>>n>…

W5500-EVB-PICO进行UDP组播数据回环测试(九)

前言 上一章我们用我们的开发板作为UDP客户端连接服务器进行数据回环测试&#xff0c;那么本章我们进行UDP组播数据回环测试。 什么是UDP组播&#xff1f; 组播是主机间一对多的通讯模式&#xff0c; 组播是一种允许一个或多个组播源发送同一报文到多个接收者的技术。组播源将…

<C++> 类和对象-类的默认成员函数

1.类的默认成员函数 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器会生成的成员函数称为默认成员函数。 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会…

kali安装使用dirsearch扫描文件

apt-get install dirsearch使用 irsearch -u [协议://域名 | ip端口]可以在这里面看到扫出来的结果 利用 发现了 通过githack将源码下来 知乎&#xff1a;AJEST安全实验室