Java switch多重选择

本文介绍了switch语句在编程中的应用,包括其工作原理、不同情况下的使用(如字符串匹配和枚举类型),以及Java12和14版本对switch语句的改进,如模式匹配和无需break的特性。
摘要由CSDN通过智能技术生成

除了if语句外,还有一种条件判断,是根据某个表达式的结果,分别去执行不同的分支。
例如,在游戏中,让用户选择选项:
单人模式
多人模式
退出游戏
这时,switch语句就派上用场了。

switch语句根据switch (表达式)计算的结果,跳转到匹配的case结果,然后继续执行后续语句,直到遇到break结束执行

如果option的值没有匹配到任何case,switch语句不会执行任何语句。这时,可以给switch语句加一个default,当没有匹配到任何case时,执行default:

对于多个==判断的情况,使用switch结构更加清晰。
使用switch时,注意case语句并没有花括号{},而且,case语句具有“穿透性”,漏写break将导致意想不到的结果:

使用switch语句时,只要保证有break,case的顺序不影响程序逻辑:
switch (option) {
case 3:

break;
case 2:

break;
case 1:

break;
}
但是仍然建议按照自然顺序排列,便于阅读。

switch语句还可以匹配字符串。字符串匹配时,是比较“内容相等”;switch语句还可以使用枚举类型

switch表达式
使用switch时,如果遗漏了break,就会造成严重的逻辑错误,而且不易在源代码中发现错误。从Java 12开始,switch语句升级为更简洁的表达式语法,使用类似模式匹配(Pattern Matching)的方法,保证只有一种路径会被执行,并且不需要break语句
public class Main {
public static void main(String[] args) {
String fruit = “apple”;
switch (fruit) {
case “apple” -> System.out.println(“Selected apple”);
case “pear” -> System.out.println(“Selected pear”);
case “mango” -> {
System.out.println(“Selected mango”);
System.out.println(“Good choice!”);
}
default -> System.out.println(“No fruit selected”);
}
}
}

注意新语法使用->,如果有多条语句,需要用{}括起来。不要写break语句,因为新语法只会执行匹配的语句,没有穿透效应。
很多时候,我们还可能用switch语句给某个变量赋值。

yield
大多数时候,在switch表达式内部,我们会返回简单的值。如果需要复杂的语句,我们也可以写很多语句,放到{…}里,然后,用yield返回一个值作为switch语句的返回值
public class Main {
public static void main(String[] args) {
String fruit = “orange”;
int opt = switch (fruit) {
case “apple” -> 1;
case “pear”, “mango” -> 2;
default -> {
int code = fruit.hashCode();
yield code; // switch语句返回值
}
};
System.out.println("opt = " + opt);
}
}

从Java 14开始,switch语句正式升级为表达式,不再需要break,并且允许使用yield返回值。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值