文章目录
- 3.3 switch语句
- 3.3.1 switch基本格式
- 3.3.2 switch扩展
- 3.3.3 练习
3.3 switch语句
3.3.1 switch基本格式
switch语句格式:
switch(表达式){case 值1:语句体1;break;case 值2:语句体2;break;...default:语句体n+1;break;
}
执行流程:
- 首先计算表达式的值
- 依次和
case
后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break
就会结束。 - 如果所有的
case
后面的值和表达式的值都不匹配,就会执行defalut
里面的语句体,然后结束整个switch
语句。
格式说明:
- 表达式:(将要匹配的值)取值为byte、short、int、char。JDK5之后可以是
枚举
,JDK7之后可以是String
。 - case:后面跟的值要和表达式进行比较的值(被匹配的值)
- break:表示中断,结束的意思,用来结束switch语句
- default:表示所有的情况都不匹配的时候,就执行该处的内容,和if语句的else相似
- case后面的值只能是字面量,不能是变量
- case给出的值不允许重复
代码示例:
public class SwitchDemo1 {public static void main(String[] args) {// 1、定义变量记录我心里想吃的面String noodles = "火鸡面";// 2、拿着这个面利switch跟四种面条匹配switch (noodles) {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;}}
}
3.3.2 switch扩展
【1】default的位置和省略
public class SwitchDemo2 {public static void main(String[] args) {/*default的位置和省略1、位置:default不一定是写在最下面的,我们可以写在任意位置,只不过习惯会写在最下面2、省略:default可以省略,语法不会有问题,但是不建议省略*/int number = 1;switch (number){case 5:System.out.println("number的值为1");break;case 10:System.out.println("number的值为10");break;case 1:System.out.println("number的值为20");}}
}
注意:
default的位置和省略
1、位置:default不一定是写在最下面的,我们可以写在任意位置,只不过习惯会写在最下面
2、省略:default可以省略,语法不会有问题,但是不建议省略
【2】case穿透
public class SwitchDemo2 {public static void main(String[] args) {/*default的位置和省略1、位置:default不一定是写在最下面的,我们可以写在任意位置,只不过习惯会写在最下面2、省略:default可以省略,语法不会有问题,但是不建议省略*/int number = 1;switch (number){case 1:System.out.println("number的值为1");
// break;case 10:System.out.println("number的值为10");
// break;case 20:System.out.println("number的值为20");
// break;}}
}
输出结果
D:\Environment\JDK1.8\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA
number的值为1
number的值为10
number的值为20
case穿透:
就是语句体中没有写break导致的。
执行流程:
首先还是会拿着小括号中表达式的值跟下面每一个case进行匹配。
如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么结束整个switch语句。
如果没有发现break,那么程序就会继续执行下一个case语句体,直到遇到break或者大括号结束。
使用场景:
如果有多个case语句体重复了,那么我们考虑使用case穿透去简化代码。
【3】switch新特性(大于JDK12版本)
switch(number){case 1 -> {System.out.println("1");}case 2 -> {System.out.println("2");}case 3 -> {System.out.println("3");}default -> {System.out.println("没有这个选项");}
}
注意:
如果大括号中只有一行代码,大括号也可以省略。
【4】switch和if第三种格式各自的使用场景
if的第三种格式一般用于对范围的判断。
switch一般用于把有限个数据一一列举出来,让我们任选其一。
3.3.3 练习
需求:
键盘录入星期数,输出工作日,休息日
(1-5)工作日。(6-7)休息日
代码实现:
public class SwitchDemoTest {public static void main(String[] args) {// 1、键盘录入星期数Scanner sc = new Scanner(System.in);System.out.println("请输入星期数:");int week = sc.nextInt();// 2、利用switch语句来进行选择switch (week) {case 1:case 2:case 3:case 4:case 5:System.out.println("工作日");break;case 6:case 7:System.out.println("休息日");break;default:System.out.println("没有这个星期。");break;}}
}