java全栈系列之JavaSE--switch多选择结构015

多选择结构除了if多分支判断还有switch case语句。switch case语句判断一个变量与一系列值的某个值是否相等,每一个值称为一个分支。switch可以支持的变量类型有:byte、short、int、char从javaSE7开始switch开始支持String类型

if判断区间比较方便,而switch是匹配具体某一个值

switch语法格式:

switch(条件/表达式){
     
            case "值1":
                //执行的语句块1
                break;	//
            case "值2":
                //执行的语句块2
            case "值3":
                //执行的语句块3
            default:
            	//默认执行的。当所有条件都不满足时执行。相当于else

案例1 JDK7开始switch开始支持String类型

package Test_Demo;
import java.util.Scanner;
public class Demo13 {
     
    public static void main(String[] args) {
     
        System.out.print("请输入你的段位:");
        Scanner S=new Scanner(System.in);
        String s=S.next();
        switch(s){
     
            case "荣耀王者":
                System.out.println("荣耀王者好厉害!!!");
            case "最强王者":
                System.out.println("最强王者还可以...");
            case "至尊星耀":
                System.out.println("加油努力上个王者!");
            case "永恒钻石":
                System.out.println("老老实实在钻石呆着吧");
            case "尊贵铂金":
                System.out.println("额....还是别上组钻石了吧");
            case "荣耀黄金":
                System.out.println("幼儿园小朋都比你厉害!");
            case "倔强青铜":
                System.out.println("你刚下载的游戏吧?");
            default:
                System.out.println("你不会没有段位吧?小菜鸡");
        }
    }
}

执行结果:

请输入你的段位:最强王者
最强王者还可以...
加油努力上个王者!
老老实实在钻石呆着吧
额....还是别上组钻石了吧
幼儿园小朋都比你厉害!
你刚下载的游戏吧?
你不会没有段位吧?小菜鸡

输入的是“最强王者”可是除了荣耀王者所有的输出语句都输出出来了,这是因为case穿透造成的。在每个case后加个bleak;即可,break在if中作用是结束循环,在switch中是结束switch循环,continue的作用是结束本次循环继续执行下次循环


package Test_Demo;
import java.util.Scanner;
public class Demo13 {
     
    public static void main(String[] args) {
     
        System.out.print("请输入你的段位:");
        Scanner S=new Scanner(System.in);
        String s=S.next();
        switch(s){
     
            case "荣耀王者":
                System.out.println("荣耀王者好厉害!!!");
                break;
            case "最强王者":
                System.out.println("最强王者还可以...");
                break;
            case "至尊星耀":
                System.out.println("加油努力上个王者!");
                break;
            case "永恒钻石":
                System.out.println("老老实实在钻石呆着吧");
                break;
            case "尊贵铂金":
                System.out.println("额....还是别上组钻石了吧");
                break;
            case "荣耀黄金":
                System.out.println("幼儿园小朋都比你厉害!");
                break;
            case "倔强青铜":
                System.out.println("你刚下载的游戏吧?");
                break;
            default:
                System.out.println("你不会没有段位吧?小菜鸡");
                break;
        }
    }
}

执行结果:

请输入你的段位:至尊星耀
加油努力上个王者!

加入break之后只会匹配符合case值的语句块。如果不加入break;则会一直匹配。

java反编译

字符的本质还是数字

.java文件通过编译成功.class文件。class文件也叫字节码文件(人看不懂的,需要进行反编译),将class文件编译为.java文件。程序能运行一定是已经生成.class文件才能运行
java全栈系列之JavaSE--switch多选择结构015_第1张图片
字节码文件人是看不懂的
java全栈系列之JavaSE--switch多选择结构015_第2张图片

反编译工具:IDEA

将编译后的.class文件防止src的项目下即可
java全栈系列之JavaSE--switch多选择结构015_第3张图片
用IDEA打开即可查看.class文件的编译前源文件
java全栈系列之JavaSE--switch多选择结构015_第4张图片

反编译后的.class文件中源文件判断的是switch(s),.class文件判断的是hashcode。每一个对象都对应一个hashcode。switch通过hashcode来进行判断。case则是通过hashcode将条件判断为一个数值(每一个中文都有自己对应的哈希值),判断时判断hash与条件相不相同

如下图,case语句也类似if条件判断语句
java全栈系列之JavaSE--switch多选择结构015_第5张图片

你可能感兴趣的:(java,java)