Switch
引言
说好从基础出发,绝不失信,今天就来聊一下switch吧,简单的来说一下switch是java中的分支语句。使用switch-case语句判断传入的值是否和一个case分支相同,每一个case相当于一个分支。
聊一下switch支持的数据类型吧
jdk5 之前只支持byte,short,int,char基本数据类型
jdk5 加入了枚举类型(enum)和byte,short,int,char的包装类型
jdk7 加入了String类型,因为String类中有一个hashCode方法,所以本质上比较的还是int类型
简单的看几个用法吧
下面是一个简单的switch语句的用法,每个分支变量可以使用beak结束,传入的变量是"春天",他会对每一个case语句去进行匹配,如果全部都匹配不到则执行default下的方法。
public static void main(String[] args) {
getSeaon();
}
public static void getSeaon(){
String spring = "春天";
switch (spring){
case "1":
System.out.println("1");
break;
case "夏天":
System.out.println("夏天");
break;
case "秋天":
System.out.println("秋天");
break;
case "冬天":
System.out.println("冬天");
break;
default:
System.out.println("没有该季节");
}
//输出结果为:没有该季节
但是如果变成这样了呢? 该代码块执行了第一个case语句就已经匹配到了,但使用break语句结束switch语句,所以会继续向下执行,直到找到有break的分支去跳出循环。
public static void getSeaon(){
String spring = "春天";
switch (spring){
case "春天":
System.out.println("春天");
case "夏天":
System.out.println("夏天");
case "秋天":
System.out.println("秋天");
case "冬天":
System.out.println("冬天");
default:
System.out.println("没有该季节");
}
}
/*
是的你并没有猜错结果就是:
春天
夏天
秋天
冬天
没有该季节
*/
总结
switch-case ,主要的关键点是break的使用,和他执行和匹配的顺序。他是一个从一个case一直向下去进行匹配判断的语句,检验case语句中是否含有break语句,匹配成功找到break跳出循环,就像上一个代码,虽然匹配成功了,但没有break语句跳出这个switch分支。如果把break放到case “秋天” 这个分支,那程序就会匹配执行到"秋天"这个分支再跳出语句。