- 选择语句
- switch语句格式
- 例题
- case穿透
- 例题
- 箭头标签
- 例
- 例
- 例
- 例
- switch可以有运行结果
- 例
- yield关键字
- 例
- switch语句格式
选择语句
switch语句格式
switch(表达式){case1:语句;break;case2:语句;break;……default:语句;break;
}
1.首先计算表达式的值
2.依次与case后面的值进行比较:
如果有对应的值,就执行语句,遇到break就跳出Switch语句;
如果没有对应的值,就执行default
3.表达式的结果: 字符/整数/枚举/字符串 (不能是小数,long类型)
错误实例
double weekday1 = 1.5;switch(weekday1) {case 1.5 :System.out.println("红烧排骨");break;}
[运行结果]
java: selector type double is not allowed
//代码报错,表达式结果不能是小数
4.case后是真实数据或字符串,不能重复
5.default通常写在最后,表示所有case都不匹配时执行的代码。也可以写在前面,但一般不会那样做
例题
假设一个菜单
周一是红烧排骨,
周二是辣椒炒肉,
周三是清蒸鱼,
周四是可乐鸡翅,
周五是牛肉火锅,
键盘录入日期,查看那天的菜单
public static void main(String[] args) {//键盘录入日期System.out.println("输入今天的星期数(1~5):");Scanner sc = new Scanner(System.in);int weekday = sc.nextInt();//选择语句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;default :System.out.println("日期输入错误");break;}/*一定要考虑输入错误这种特殊情况,某些严重情况可能会导致程序卡住或者数据溢出*/}
[运行结果1]
输入今天的星期数(1~5):
8
日期输入错误
[运行结果2]
输入今天的星期数(1~5):
4
可乐鸡翅
case穿透
case 1:
case 2:
case 3:语句;break;
表达式结果为1/2/3,都执行语句
例题
假设周一周二周三的主食都是米饭,周四周五的主食都是面条,键盘录入日期,查看当天的主食
public static void main(String[] args) {//键盘录入日期System.out.println("输入今天的星期数(1~5):");Scanner sc = new Scanner(System.in);int weekday = sc.nextInt();//case穿透switch(weekday){case 1:case 2:case 3:System.out.println("米饭");break;case 4:case 5:System.out.println("面条");break;default :System.out.println("日期输入错误");break;}}
[运行结果1]
输入今天的星期数(1~5):
1
米饭
[运行结果2]
输入今天的星期数(1~5):
2
米饭
箭头标签
case 1 :语句;break;
可以写成
case 1 ->{语句;//注意没有break
}
例
switch(weekday) {case 1 -> {System.out.println("红烧排骨");}case 2 -> {System.out.println("辣椒炒肉");}case 3 -> {System.out.println("清蒸鱼");}case 4 -> {System.out.println("可乐鸡翅");}case 5 -> {System.out.println("牛肉火锅");}default ->{System.out.println("日期输入错误");}}}
在语句只有一条的情况下,还可以写成
case 1 ->语句;
例
switch(weekday) {case 1 -> System.out.println("红烧排骨");case 2 -> System.out.println("辣椒炒肉");case 3 -> System.out.println("清蒸鱼");case 4 -> System.out.println("可乐鸡翅");case 5 -> System.out.println("牛肉火锅");default ->System.out.println("日期输入错误");}
case后面可以写多个值
case 1,2,3 -> {语句;
}
例
switch(weekday){case 1,2,3->{System.out.println("米饭");}case 4,5->{System.out.println("面条");}default ->{System.out.println("日期输入错误");}}
或者
case 1,2,3 ->语句;
例
switch(weekday){case 1,2,3-> System.out.println("米饭");case 4,5-> System.out.println("面条");default -> System.out.println("日期输入错误");}
switch可以有运行结果
例
String food = switch(weekday){case 1,2,3->{yield"米饭";}case 4,5->{yield"面条";}default ->{yield"日期输入错误";}};
- 是String/int/char,关键在返回值的数据类型
- 这种写法适合“需要分支结果赋值给变量”的场景
- 小贴士:{ }外要加;
yield关键字
yield用于显示返回分支的结果并终止switch
例
case 1,2,3->{yield"米饭";}
也可以省略写为
case 1,2,3->"米饭";
以上就是java选择语句的基础内容了。下一篇我们将学习循环语句,欢迎继续关注蓝猫学姐的java学习笔记~

switch语句的传统格式与JDK新特性,从case穿透到箭头标签、多值匹配、switch返回值及yield用法,结合生活化例题,带你完整掌握Java选择语句。