Switch选择语句
switch选择语句
语法
switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}
Switch在JDK7之前只支持八大基本类型,在JDK7之后,便支持了String类型
实例1
废话不多说,先上一段代码来看看
package com.simple.struct;
/**
 * @author huYuHao
 * @version 1.0
 * @create 2021/3/11
 * @since 1.8
 */
public class SwitchDemo01 {
    public static void main(String[] args) {
        char grade = 'E';
        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("未知等级");
        }
    }
}
首先我定义了一个char类型的变量,把它放入Switch语句里
通过case来匹配值,如果匹配成功了,就会输出这个值
但是case有穿透性;就是你没有在case语句里面写break跳出
那么不管后面的值是否匹配,都会执行里面的代码
以上面的代码举例,我只在A设置了break,那么结果就是优秀

但如果我把变量设置为B,在B后面没有写Break的,就会穿透

实例2
package com.simple.struct;
/**
 * @author huYuHao
 * @version 1.0
 * @create 2021/3/11
 * @since 1.8
 */
public class SwitchDemo02 {
    public static void main(String[] args) {
        String str = "simple";
        //JDK7的新特性,表达式结果可以是字符串!!!
        //字符的本质还是数字
        //反编译: java---class(字节码文件)----反编译(IDEA)
        switch(str){
            case "秦疆":
                System.out.println("秦疆");
                break;
            case "狂神":
                System.out.println("狂神");
                break;
            default:
                System.out.println("what are you 弄啥嘞!");
        }
    }
}
这就是Switch支持的String类型变量
反编译
但是我想知道是怎么实现的怎么办?
直接使用反编译。市面上的反编译方法很多,我不一一举例了(其实我就只会一种)
我就只使用IDEA里的反编译了
第一步:找到Class文件
打开项目结构

在idea中找到存放Class文件的目录
这个是你存放class文件的地址
全选项目路径复制,转到资源管理器(此电脑)都行

粘贴回车访问

打开production里面就是你的项目结构,找到你要反编译的文件,复制

把Class文件存放在idea项目目录里
打开项目你项目存放的目录 ,直接在复制到idea目录里面不行,所以我们只能靠文件夹存放进去


把class文件放入之后,项目里面就会多一个class文件,图标是01
把它打开
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package com.simple.struct;
public class SwitchDemo02 {
    public SwitchDemo02() {
    }
    public static void main(String[] args) {
        String str = "simple";
        byte var3 = -1;
        switch(str.hashCode()) {
        case 941788:
            if (str.equals("狂神")) {
                var3 = 1;
            }
            break;
        case 997472:
            if (str.equals("秦疆")) {
                var3 = 0;
            }
        }
        switch(var3) {
        case 0:
            System.out.println("秦疆");
            break;
        case 1:
            System.out.println("狂神");
            break;
        default:
            System.out.println("what are you 弄啥嘞!");
        }
    }
}
它直接把你输入的中文翻译成hashCode去对比
教程结束
推荐Java基础学习地址:遇见狂神说
    努力做一个技术流

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号