总共有四种不同形式的switch。两种是switch语句,两种是switch表达式,表达式会生成一个值。switch表达式没有“直通式”行为。

表达式,无直通行为

int numLetters
numLetters = switch(seasonName){case "Spring" ->{System.out.println("spring time");yield 6;}case "Summer","Winter" -> 6;case "Fall" -> 4;default -> -1;
}

语句,无直通行为

switch(seasonName){case "Spring" -> {System.out.println("spring time");numLetters = 6;}case "Summer","Winter" -> numLetters = 6;case "Fall" -> numLetters = 4;default -> numLetters = -1;
}

表达式,有直通行为(Java 14引入)

int numLetters
numLetters = switch(seasonName){case "Spring":System.out.println("spring time");case "Summer","Winter":yield 6;case "Fall":yield 4;default:yield -1;
}

语句,有直通行为(“经典”形式)

switch(seasonName){case "Spring":System.out.println("spring time");case "Summer","Winter":numLetters = 6;break;case "Fall":numLetters = 4;break;default:numLetters = -1;
}

注意

1.switch()括号内seasonName,应与case后常量类型保持一致,或者是可以自动转换成可以互相比较的类型。

2.case标签可以是:类型为char、byte、short或int的常量表达式;枚举常量enum;字符串字面量String;多个字符串用逗号分隔。

3.case子句中的值必须是常量,不能是变量。

4.在语句中,default是可选的。

5.break和yield语句用来在执行完一个case分支后使程序跳出switch语句,如果没有break或yield,程序会顺序执行到switch结尾,产生直通行为。

6.不能在一个switch语句中混合使用冒号和箭头。

7.与break语句类似,yield会终止执行。但与break不同的是,yield还会生成一个值,这就是表达式的值。

Java中switch的四种用法相关推荐

  1. Java中switch的三种用法方式

    从java14开始, switch语句有了一个很大的调整, 这就让swicth语句有了更多的操作和选择,在代码上,更加的简便灵活. switch 标准方式 switch - > 用法: swit ...

  2. Java中创建对象的四种方式

    为什么80%的码农都做不了架构师?>>>    Java中创建对象的四种方式 (1) 用new语句创建对象,这是最常见的创建对象的方法.    (2) 运用反射手段,调用java.l ...

  3. JAVA中的引用四种引用类型

    关于值类型和引用类型的话题,C++.JAVA.python.go.C#等等高级语言都有相关的概念,只要理解了其底层工作原理,可以说即使是不同的语言,在面试学习工作实践中都可以信手拈来(不要太纠集语言) ...

  4. 对Java中常见的四种I/O模型理解

    对Java中常见的四种I/O模型理解 1.1 知识科普 1.1.1 同步阻塞I/O(Blocking I/O) 1.1.1.1 阻塞与非阻塞 1.1.1.2 同步与异步 1.1.1.3 同步阻塞I/O ...

  5. Java中final的三种用法

    在java中final的三种用法: 1. final成员变量 2. final函数 3. final类 final成员变量 当你在类中定义变量时,在其前面加上final关键字,那便是说这个变量一旦被初 ...

  6. java中super用来定义父类,Java中super的几种用法及与this的区别

    综观目前的 Web 应用,多数应用都具备任务调度的功能.本文由浅入深介绍了几种任务调度的 Java 实现方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab,并对其优缺 ...

  7. 第二十八期:Java线程池的四种用法与使用场景

    线程池的作用主要是为了提升系统的性能以及使用率.文章刚开始就提到,如果我们使用最简单的方式创建线程,如果用户量比较大,那么就会产生很多创建和销毁线程的动作,这会导致服务器在创建和销毁线程上消耗的性能可 ...

  8. (转载)java中super的两种用法

    (转载)http://www.cnblogs.com/rollenholt/articles/2033989.html 通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说 ...

  9. java中创建对象的方式有哪些,Java中创建对象的四种方式

    四种方式: http://wenku.baidu.com/link?url=mv6VbMd3d-aCkbGMhn6rbLwFbef7v60nRbyA-thP6Y7hqtjiv0K0_kdtfOWaUj ...

最新文章

  1. 一场“交通进化”将至: 5G带给车联网与自动驾驶哪些升级?
  2. win7下用sublime搭建c语言开发环境
  3. 同一MODBUS读写多(两)个BH32角度传感器
  4. python oracle数据库操作_Python连接oracle数据库的基本操作
  5. Oracle数据类型及存储方式——字符类型篇
  6. SQL server 中SQL语句实战操作
  7. ActionBarDisplayOptions展示选项的菜单
  8. html 怎么使用http请求数据类型,HTTP请求方式中8种请求方法(简单介绍)
  9. Spark List组件滚动条加事件使datalist数据发生变化
  10. 基于Apache POI 从xlsx读出数据
  11. 1967. 作为子字符串出现在单词中的字符串数目
  12. node.js gbk编码_如何使用Node.js将Chrome的霸王龙编码为电报游戏
  13. 【Android市场】提交应用的一点经验分享
  14. 你的 App 在 iOS 13 上被卡死了吗?
  15. OpenCV自动内存管理
  16. authorization 传 就跨域_将Token添加到请求头Heade
  17. C# 文件上传 默认最大为4M的解决方法
  18. Axure实战002:APP原型设计思路
  19. matlab中的连乘符号,数学中的连乘符号
  20. dns udp tcp

热门文章

  1. 远程连接阿里云服务器出现“远程桌面,身份验证错误:要求的函数不受支持“解决办法
  2. H3C iMC 存在远程命令执行漏洞
  3. ffmpeg命令详细说明
  4. OpenCV笔记:模板匹配 cv2.matchTemplate()、cv2.minMaxLoc() 与 绘制矩形 cv2.rectangle() 方法介绍
  5. maven中hibernate-core和struts2-core中javassist解决办法(cannot be cast to javassist.util.proxy.Proxy)
  6. Oh-my-Posh V3更新说明
  7. MySQL 8.0如何配置my.cnf
  8. Dcloud学习资料汇总+视频教程
  9. echo回音消除方案
  10. wifi 小程序 透传_微信小程序之一键连接wifi