Java基础教程(002):Java判断和循环之switch语句
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;
}
}
}
原文地址:https://blog.csdn.net/WwLK123/article/details/143783118
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!