Java:switch多选择结构、反编译
多选择结构还有一个实现方式就是switch case语句。
switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch语句中的变量类型可以是:
byte、short、int或者char
从Java SE 7开始switch支持字符串String类型
同时case标签必须为字符串常量或者字面量
语法:
switch(expression){ case value: //语句 Break; //可选 case value: //语句 Break; //可选 //可以有任意数量的case语句 default: //可选 //语句 }
代码演示:
1 package com.jiemyx.struct; 2 3 public class SwitchDemo01 { 4 public static void main(String[] args) { 5 char grade = 'C'; 6 7 switch (grade){ 8 case 'A': 9 System.out.println("优秀"); 10 break; //可选,最好写上 11 case 'B': 12 System.out.println("良"); 13 break; //可选 14 case 'C': 15 System.out.println("及格"); 16 break; //可选 17 case 'D': 18 System.out.println("再接再厉"); 19 break; //可选 20 case 'E': 21 System.out.println("挂科"); 22 break; //可选 23 default: //可选 24 System.out.println("未知等级"); 25 } 26 } 27 }
1 package com.jiemyx.struct; 2 3 public class SwitchDemo02 { 4 public static void main(String[] args) { 5 String name = "小明"; 6 7 //JDK7的新特性,表达式结果可以是字符串!!! 8 //字符串的本质还是数字 9 10 //反编译 java文件-->class(字节码文件)-->反编译成java文件(使用IDEA) 11 12 switch (name){ 13 case "小明": 14 System.out.println("小明"); 15 break; 16 case "小红": 17 System.out.println("小红"); 18 break; 19 case "李明": 20 System.out.println("李明"); 21 break; 22 default: 23 System.out.println("某某"); 24 } 25 } 26 }
反编译
演示:反编译SwitchDemo02.class文件
1、 选择java文件,点击右上角的图标,找到class文件位置



2、找到SwitchDemo02.java文件存放目录
右击Java文件,根据下图步骤找到存放目录


3、 把class文件复制到存放java文件的目录下

4、 回到IDEA软件,会看到class文件,双击打开,接受协议

5、得到class文件反编译后的Java文件
1 // 2 // Source code recreated from a .class file by IntelliJ IDEA 3 // (powered by FernFlower decompiler) 4 // 5 6 package com.jiemyx.struct; 7 8 public class SwitchDemo02 { 9 public SwitchDemo02() { 10 } 11 12 public static void main(String[] args) { 13 String name = "小明"; 14 byte var3 = -1; 15 switch(name.hashCode()) { 16 case 756703: 17 if (name.equals("小明")) { 18 var3 = 0; 19 } 20 break; 21 case 762995: 22 if (name.equals("小红")) { 23 var3 = 1; 24 } 25 break; 26 case 845952: 27 if (name.equals("李明")) { 28 var3 = 2; 29 } 30 } 31 32 switch(var3) { 33 case 0: 34 System.out.println("小明"); 35 break; 36 case 1: 37 System.out.println("小红"); 38 break; 39 case 2: 40 System.out.println("李明"); 41 break; 42 default: 43 System.out.println("某某"); 44 } 45 46 } 47 }

浙公网安备 33010602011771号