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号