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

关于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语法和编程规范,并从中学习编程技巧和最佳实践。
  • 代码审查和安全性分析:反编译工具可以用于代码审查和安全性分析。通过查看反编译后的源代码,开发人员可以检查代码是否存在潜在的安全漏洞或不良编码实践,并采取相应的措施进行修复和改进。
  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值