关于java选择结构switch及反编译

news2024/10/7 4:32:06

关于java选择结构switch及反编译

在上一篇文章中,我们了解了选择结构中的if else等,本章内容让我们说明一下上一篇文章中的伏笔,switch选择结构🤔

switch多选择结构

  • 多选择结构:多选择结构除了else if ,就是我们要介绍的switch case😀
  • 分支:switch case 语句判断一个变量与一系列值中的某一个值是否相等,每一个值都是称为一个分支。
  • switch语句中可以是 byte 、short、int、char类型,自JavaSE7开始,也支持String字符串类型了,下面会介绍到😎
  • switch case使用方式:
switch(expression)
{
    case value:
         //语句
         break;  //可以不选
    case value:
         //语句
         break;  //可以不选
    case value:
        //语句
        break;   //可以不选
    //可以有任意的case语句
    default:    //可以不选
        //语句           
}
  • 我们看到上面代码注释中有可以不选的注释,下面会详细的说明。
  • break是结束标志,如果有break就不会向下继续走了,代表终止了switch。
  • default和else类似,是在所有判断之后。
  • switch多选择结构实例说明

我们声明一个char类型的变量,然后用switch判断这个变量的级别。

public class Demo 
{
    public static void main(String[] args) 
    {
        char grade='C';
        
        switch(grade)
        {
            case 'A':
                System.out.println("优秀");
                break;
            case 'B':
                System.out.println("良好");
            case 'C':
                System.out.println("及格");
            case 'D':
                System.out.println("请再接再励!");
            case 'E':
                System.out.println("挂科");      
            default:
                System.out.println("未知等级");                
        }
    }
}

我们执行一下代码,我们会发现,C满足了及格的条件,但是并没有只输出了及格,还输出了下面代码中的语句。

及格
请再接再厉!
挂科
未知等级
    
进程结束......    

所以,这里就说明了break的重要性,虽然这个可以不去写出来,程序也可以运行,但是break一定要写出来!我们在以后的工作中,平时的代码书写中,要养成好的习惯,在case的时候,直接把break写出来。

  • 我们发现,不写出break,没有终止标志,就会一直向下运行,这种现象就是叫做case穿透
public class Demo 
{
    public static void main(String[] args) 
    {
        char grade='C';
        
        switch(grade)
        {
            case 'A':
                System.out.println("优秀");
                break;
            case 'B':
                System.out.println("良好");
                break;
            case 'C':
                System.out.println("及格");
                break;
            case 'D':
                System.out.println("请再接再励!");
                break;
            case 'E':
                System.out.println("挂科");   
                break;
            default:
                System.out.println("未知等级");                
        }
    }
}

这样输出的结果,就是只有满足符合的条件的时候,输出的语句。

及格

我们在这里,还会有一些疑问,就是switch和 if 都是选择结构,但是什么时候用哪个选择是最好的呢🤔

if 多用于判断区间,switch 多用于判断具体的值

反编译

因为java是源文件,经过编译,生成class文件,在通过解释,给到操作系统平台,我们现在要对class文件进行反编译。

首先我们用刚刚学到的switch,写一段代码。

public class Demo
{
    public static void main(String[] args)
    {
        String name="落满樱花的羊";
        switch (name)
        {
            case "落满樱花":
                System.out.println("NO");
                break;
            case "落满樱花的":
                System.out.println("NO");
                break;
            case "落满樱花的羊":
                System.out.println("Yes");
                break;
            default:
                System.out.println("内容错误");
        }
    }
}

我们用的工具是Idea,所以,下面的反编译演示也是用Idea进行演示的,当然也有很多其他的反编译工具😀

1、首先,我们先编译运行一下这段代码,让它去生成class文件。

在这里插入图片描述

输出的结果为YES,已经编译好了,我们就可以去找它的class文件了😎

2、点击文件,找到项目结构,打开。

在这里插入图片描述

3、复制路径在 我的电脑 中输入。

在这里插入图片描述

在这里插入图片描述

4、进入文件夹后,我们可以看到production文件夹,点击去,可以看到项目名字(我的项目名字叫One😊),根据自己建立的包,找到对应的类文件的编译后的class文件。

在这里插入图片描述

5、找到后,我们在Idea项目目录中,找到刚刚的这个类,然后右键,选择打开于资源管理器。

在这里插入图片描述

6、打开以后,我们将刚刚的class文件,复制粘贴过去,像这样。

在这里插入图片描述

7、我们再打开idea的时候,就会发现刚刚的包中,多了一个不一样图标的文件,这个就是class文件。

在这里插入图片描述

8、双击文件打开,就可以看到反编译的源码了。

在这里插入图片描述

反编译的作用

  • 查看源代码:反编译工具可以将字节码文件转换为与原始源代码相似的Java代码。这对于开发人员来说非常有用,因为他们可以查看和理解其他人编写的代码,或者在没有源代码的情况下进行代码分析。
  • 调试和修复问题:当遇到问题时,反编译工具可以帮助开发人员快速定位和修复代码中的错误。通过查看反编译后的源代码,开发人员可以更容易地理解代码的逻辑和执行流程,从而更好地进行调试和修复。
  • 学习和教学:反编译工具可以帮助初学者学习和理解Java编程语言。通过查看反编译后的源代码,初学者可以更好地理解Java语法和编程规范,并从中学习编程技巧和最佳实践。
  • 代码审查和安全性分析:反编译工具可以用于代码审查和安全性分析。通过查看反编译后的源代码,开发人员可以检查代码是否存在潜在的安全漏洞或不良编码实践,并采取相应的措施进行修复和改进。

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

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

相关文章

Github 2023-12-29 开源项目日报 Top10

根据Github Trendings的统计,今日(2023-12-29统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目2HTML项目2TypeScript项目2Python项目2非开发语言项目2C项目1JavaScript项目1 精选面试问题列表 创…

Xamarin开发:商场促销(策略设计模式)

Xamarin开发:商场促销(策略设计模式) 一、介绍二、需求分析三、实现四、需求分析问题1解决方案问题2解决方案 五、增加新需求六、代码优化与分析总结 一、介绍 本文引用《大话设计模式》第二章节的内容进行学习分析,仅供学习使用 这里接着我…

centos7.9 TCP 加速

BBR是谷歌开发的新的TCP加速算法,在网络状况不好的服务器上开启TCP的bbr,可以在无需增加任何硬件投入的情况下实现网络加速,并且客户端无需做任何配置,因此使用起来非常的方便。TCP加速对网络状况较好的内网环境,或者大…

【数据结构和算法】找出两数组的不同

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 哈希类算法题注意事项 2.2 方法一:哈希法 三、代码 3.1 方法一:哈希法 四…

Oracle(4)

子查询 子查询语法很简单,就是select 语句的嵌套使用。 查询工资比SCOTT高的员工信息 分析:两步即可完成 1. 查出SCOTT的工资 SQL> select ename, sal from emp where enameSCOTT 其工资3000 2. 查询比3000高的员工 SQL> select * from emp…

【零基础入门VUE】VueJS - 环境设置

✍面向读者&#xff1a;所有人 ✍所属专栏&#xff1a;零基础入门VUE专栏https://blog.csdn.net/arthas777/category_12537076.html 直接在 HTML 文件中使用 <script> 标签 <html><head><script type "text/javascript" src "vue.min.j…

Spark 集群搭建

文章目录 搭建前准备安装搭建解压并重命名环境变量配置配置文件yarn-site.xmlspark-env.sh 官网求 π(PI) 案例启动spark-shell通过浏览器查看显示查看 Spark 的网页信息展示 搭建前准备 下载地址&#xff1a;Index of /dist/spark (apache.org) 配置好 hadoop 环境&#xff…

实战 | 使用OpenCV快速去除文档中的表格线条(步骤 + 源码)

导 读 本文主要介绍如何使用OpenCV快速去除文档中的表格线条,并给详细步骤和代码。 背景介绍 测试图如下,目标是去除下面三张图中的表格线条,方便后续图像处理。 实现步骤 下面演示详细步骤,以图1为例: 【1】获取二值图像:加载图像、转为灰度图、OTSU二值化 i…

Awesome Chrome Form UI - 框架设计与基础实现

Money is not evil by itself. Its just paper with perceived value to obtain other things we value in other ways. If not money what is evil you may ask? Evil is the unquenchable, obsessive and moral bending desire for more. Evil is the bottomless,soulless …

多模态大模型-CogVLm 论文阅读笔记

多模态大模型-CogVLm 论文阅读笔记 COGVLM: VISUAL EXPERT FOR LARGE LANGUAGEMODELS 论文地址 :https://arxiv.org/pdf/2311.03079.pdfcode地址 : https://github.com/THUDM/CogVLM时间 : 2023-11机构 : zhipuai,tsinghua关键词: visual language model效果:&#xff08;2023…

C++面向对象(OOP)编程-C++11新特性详解

C11作为一个重要的版本&#xff0c;引入了很多新的特性&#xff0c;解决了C语言本身很多遗留的内存泄露问题&#xff0c;并且提供了很多比较灵活的用法。引入的auto&#xff0c;智能指针、线程机制都使得C语言的灵活性、安全性、并发性有了很大的提升。 本文会比较详细的介绍C1…

医疗行业的信息安全现状

文章目录 前言一、医疗行业相关政策法规二、“互联网+医疗健康”推进信息安全建设三、医疗行业网络安全形势依然严峻1、等级保护工作未全面开展落实2、医疗行业网络安全风险较高医疗行业网络安全隐患普遍存在遭受勒索病毒攻击严重3、安全防护水平相对落后缺乏必要的网络安全防护…

QT应用篇 三、QML自定义显示SpinBox的加减按键图片及显示值效果

QT应用篇 一、QT上位机串口编程 二、QML用Image组件实现Progress Bar 的效果 三、QML自定义显示SpinBox的加减按键图片及显示值效果 文章目录 QT应用篇前言一、qml需求二、使用组件1.SpinBox组件2.SpinBox中QML的使用 总结 前言 记录自己学习QML的一些小技巧方便日后查找 QT的…

rsync备份工具

有了同步源服务器之后&#xff0c;就可以使用rsync工具来执行远程同步了&#xff0c;本节介绍的备份操作均在客 户机&#xff08;发起端&#xff09;执行&#xff0c;实际上&#xff0c;同步源与发起端可以是同一台主机&#xff08;当然这种情况不常见&#xff09;&#xff0c;…

腾讯云轻量服务器和云服务器区别对比(超详细)

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…

【12.28】转行小白历险记-刷算法04

01两两交换链表中的节点 整体思路 1.要修改后一个节点的指向一定要知道前一个节点的指向才可以改变后面一个节点的 2.分情况奇数和偶数节点&#xff0c;终止条件很重要 3.虚拟头节点&#xff0c;是对我们操作的指针是不是头节点进行判断 02删除链表的倒数第N个节点 思路 …

大数据与人工智能|万物皆算法(第三节)

要点一&#xff1a;数据与智能的关系 1. 一切的核心都是数据&#xff0c;数据和智能之间是密切相关的。 数据是对客观现实的描述&#xff0c;而信息是数据转化而来的。 例如&#xff0c;24是数据&#xff0c;但说“今天的气温是24摄氏度”是信息&#xff0c;而说“班可以分成24…

oracle与mysql的分析函数(窗口函数)

分析函数定义 在SQL语句中&#xff0c;很多查询语句需要进行GROUP BY分组汇总&#xff0c;但是一旦经过分组&#xff0c;SELECT返回的记录数就会减少。为了保留所有原始行记录&#xff0c;并且仍可以进行分组数据分析&#xff0c;分析函数应运而生。 Oracle 8i 版本开始支持窗…

java在线票务系统(选座)Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java servlet 在线票务系统&#xff08;选座&#xff09;管理系统是一套完善的java web信息管理系统 系统采用serlvetdaobean&#xff08;mvc模式)&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要…

MongoDB主从复制,一文打尽!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…