Switch多选择结构
- 多选择结构还有一个实现方式就是Switch case语句。
- switch case 语句判断一个变量与一系列中莫个值是否相等,每个值称为一个分支。
- Switch语句中的变量类型可以是:
- byte、short、int、long或者 char。
- 从 Java SE 7 开始 ,Switch开始支持字符串 String 类型了
- 同时 case标签必须为字符串常量或字面量。
case穿透:
package struct;
public class SwitchDemo01 {
public static void main(String[] args) {
//case穿透 switch匹配一个具体的值
char grade= 'B';
switch(grade){
case 'A':
System.out.println("优秀");
break;//可选
case 'B':
System.out.println("良好");
break;//可选(不加break,case则会穿透到下层。)
case 'C':
System.out.println("及格");
break;//可选
case 'D':
System.out.println("不合格");
break;//可选
default://可选(默认)
System.out.println("没有该等级成绩");
}
}
}
Switch字符串:
package struct;
public class SwitchDemo02 {
public static void main(String[] args) {
//JDK7的新特性,表达式结果可以是字符串!!!
//字符的本质还是数字
//反编译 java……class(字节码文件)……反编译(idea)
String name="湖湖湖";
switch(name){
case "呦呦":
System.out.println("喂喂");
break;
case "湖湖湖":
System.out.println("牛牛牛");
break;
default:
System.out.println("没有此选项");
}
}
}
可以用idea对class字节码文件进行反编译
反编译上例的结果:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package struct;
public class Demo06 {
public Demo06() {
}
public static void main(String[] args) {
String name = "湖湖湖";
byte var3 = -1;
switch(name.hashCode()) {
case 691392:
if (name.equals("呦呦")) {
var3 = 0;
}
break;
case 28048278:
if (name.equals("湖湖湖")) {
var3 = 1;
}
}
switch(var3) {
case 0:
System.out.println("喂喂");
break;
case 1:
System.out.println("牛牛牛");
break;
default:
System.out.println("没有此选项");
}
}
}