P13 选择语句
系统:Win10
Java:1.8.0_333
1.选择语句 - switch
switch 语句格式
switch (表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
执行流程
- 首先计算出表达式的值
- 其次,和 case 依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到 break 就会结束
- 最后,如果所有的 case 都和表达式的值不匹配,就会执行 default 语句体部分,然后程序结束掉
代码示例
public class Demo01 {
public static void main(String[] args) {
// 定义变量,判断是星期几
int weekday = 3;
// switch语句实现
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;
}
}
}
switch 后面的小括号当中只能是下列数据类型
基本数据类型:byte、short、char、int
引用数据类型:String字符串、enum枚举
2.case 的穿透性
在 switch 语句中,如果 case 的后面不写 break,将会出现穿透现象,也就是不会在判断下一个 case 的值,直接向后运行,直到遇到 break,或者整体 switch 结束
public class Demo02 {
public static void main(String[] args) {
int i = 2;
switch (i) {
case 1:
System.out.println("执行case1");
break;
case 2:
System.out.println("执行case2");
case 3:
System.out.println("执行case3");
case 4:
System.out.println("执行case4");
break;
case 5:
System.out.println("执行case5");
break;
default:
System.out.println("执行default");
break;
}
}
}
上述程序中,执行 case2 后,由于没有 break 语句,程序会一直往后走,不会再判断 case,直到遇到 case4 内的 break
由于 case 存在穿透性,因此初学者在编写 switch 语句时,必须要写上 break