除了if语句外,还有一种条件判断,是根据某个表达式的结果,分别去执行不同的分支。

1、switch多重选择

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

switch case语句语法格式:

switch(expression){case value1 :// 语句1break;case value2 :// 语句2break;// 任意数量的case语句... ... default : // 可选// 都不满足条件时,执行的语句
}

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

虽然switch语句可以写成if语句形式,但对于多个"=="判断的情况,使用switch结构更加清晰。

int option = 3;
switch (option) {case 1:System.out.println("Selected 1");break;case 2:System.out.println("Selected 2");break;case 3:System.out.println("Selected 3");break;default:System.out.println("Not selected");break;
}// 输出结果:
Selected 3

注意:case语句并没有花括号{}, switch语句中对每个case正确编写beak语句才能对应得上,case语句如果漏写break将导致意想不到的结果,case语句具有"穿透性"。

switch的计算结果必须是整型、字符串或枚举类型。

2、switch表达式

使用switch时,如果遗漏了break,就会造成严重的逻辑错误,而且不易在源代码中发现错误。

从Java12开始,switch语句升级为更简洁的表达式语法,使用类似于模式匹配的方法,保证只有一种路径会被执行,并且不需要break语句。

String fruit = "apple";
// java12开始,表达式语法
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");
}
// 使用switch语句给变量赋值
int opt = switch (fruit) {case "apple" -> 1;case "pear", "mango" -> 2;default -> {int code = fruit.hashCode();yield code; // switch语句返回值}};System.out.println("opt = " + opt);// 运行结果:
Selected apple
opt = 1

注意:新语法使用"->",如果有多条语句,需要用{}括起来。

不要写break语句,因为新的语法只会执行匹配的语句,没有穿透效应。

3、使用yield返回值

如果需要写很多语句,放到{...}里,可以使用yield返回一个值作为switch语句的返回值。

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);// 输出结果
opt = -1008851410

Java多重选择switch相关推荐

  1. java用于选择结构的关键字_Java结构

    Java结构 选择结构 什么是 if 选择结构 基本 if 选择结构 if选择结构是根据条件判断之后再做处理的一种语法结构. if(条件){ //代码块//条件成立后要执行的代码,可以是一条语句,也可 ...

  2. Java 中的 Switch 都支持 String 了,为什么不支持 long?

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 我们知道 Java Switc ...

  3. Java中的 Switch 是如何支持 String 的?为什么不支持 long?

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:jitwxs http ...

  4. Java的选择结构详解

    Java的选择结构 一 . Java的执行语句 1.顺序语句:方法中的代码从上往下执行 2.分支语句:根据不同的条件,指定不同的功能 2.1 if分支 2.2 switch分支 3.循环语句:条件成立 ...

  5. java switch null_[改善Java代码]小心switch带来的空值异常

    使用枚举定义常量时,会伴有大量的switch语句判断,目的是伪类每个枚举项解释其行为,例如: 1 public classClient {2 public static voidmain(String ...

  6. 确定多重选择列表控件 (List Control) 中的选定内容

    确定多重选择列表控件 (List Control) 中的选定内容 依次通过控件的 Items 集合,分别测试每一项的 Selected 属性. 下面的示例显示如何测试多重选择 ListBox 控件(名 ...

  7. [初级]Java中的switch对整型、字符型、字符串的具体实现细节

    转载自 [初级]Java中的switch对整型.字符型.字符串的具体实现细节 Java 7中,switch的参数可以是String类型了,这对我们来说是一个很方便的改进.到目前为止switch支持这样 ...

  8. 【Java】选择结构排坑指南

    最近在实践中发现了一个问题,分享一下 众所周知,Java的选择结构和循环结构是允许单行不加大括号的 有的资料上会提倡这种模式,因为可以缩减代码的行数 也有的不提倡,认为可能会在后期添加行数很麻烦以及出 ...

  9. java中选择排序和冒泡排序_Java选择排序就是比冒泡排序牛「具体详情,请看此文」...

    什么是选择排序 选择排序原理即是,遍历元素找到一个最小(或最大)的元素,把它放在第一个位置,然后再在剩余元素中找到最小(或最大)的元素,把它放在第二个位置,依次下去,完成排序. 时间复杂度 选择排序的 ...

  10. excel vba 快速显示及隐藏所选数据行,并获取多重选择区地址的行列号

    Sub Macro3() Application.OnKey "^h", "sHide" '仅隐藏选择的行2013.3.15 by lijilin Applic ...

最新文章

  1. python transformer category_Python 生成VOC格式的标签实例
  2. Linux设备驱动Hello World程序介绍
  3. ETHNET DHCP的两种方式
  4. Gentoo 安装日记 04 (开启ssh服务,ssh登录虚拟机)
  5. web安全之点击劫持攻击(clickjack)
  6. 完美解决ALEXA工具条无法显示或显示白框
  7. 直接设置Activity的背景颜色
  8. spring项目链接RabbitMQ集群
  9. mysql 主主复制
  10. ubuntu下c++中base64编解码测试和图片编解码测试
  11. java关键字_Java关键字
  12. docker探索-在centos6.5中安装docker(三)
  13. 2021-09-02二叉树的中序遍历
  14. 10款Mac上程序员装机必备的开发工具推荐和下载
  15. eclipse android环境搭建,Eclipse Android开发环境搭建教程
  16. js数组 reduce函数
  17. SpringBoot+redis时事务和SessionCallback的使用和抉择
  18. ABAP学习笔记-基础语法-06-流程控制(01)-条件语句
  19. 企业建站有必要使用高防服务器吗?
  20. 操作系统课程项目 OS project —— Pintos from Project 1 to Project 3

热门文章

  1. Windows中使用命令创建计划任务(at、schtasks)
  2. js验证开始时间和结束时间 结束时间不能比开始时间早
  3. 【iOS越狱开发】iOS越狱步骤2之SSH连接
  4. Java实现 LeetCode 707 设计链表(环形链表)
  5. 访问samba文件 指定网络名不再可用
  6. MBP清除NVRAM和PRAM
  7. js中函数的传递参数
  8. IDEA更改主题颜色
  9. linux 内存容量换算,使用Linux的sar 命令来计算Linux的内存剩余
  10. js提交form表单给php,JS提交form表单实例分析