- switch 语句格式
switch 语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),JDK7后可以接收字符串。
switch(表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
执行流程
首先计算出表达式的值
其次,和 case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的 case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
public class Main {
public static void main(String[] args) {
//定义变量,判断是星期几
int weekday=5;
//swith语句实现选择
switch (weekday){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期天");
break;
default:
System.out.println("参数错误");
break;
}
}
}
打印结果:
星期五
- case 的穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。
public class Main {
public static void main(String[] args) {
int weekday=1;
switch (weekday){
case 1:
System.out.println("星期一");
case 2:
System.out.println("星期二");
case 3:
System.out.println("星期三");
default:
System.out.println("参数错误");
break;
}
}
}
打印结果:
星期一
星期二
星期三
参数错误
上述程序中,执行case1后,由于没有break语句,程序会一直向后走,不会在判断case,也不会理会break,直接运行完整体switch。