jdk17新特性——Switch表达式增强

目录

    • 一、Switch表达式增强示例一
      • 1.1、传统的方式 case中变量赋值示例
      • 1.2、jdk17 case中变量赋值示例
    • 二、Switch表达式增强示例二
      • 2.1、传统的方式 case中值匹配多个示例
      • 2.2、jdk17 case中值匹配多个示例
    • 三、Switch表达式增强示例三
      • 3.1、传统的方式 case中需要多行业务代码示例
      • 3.2、jdk17中 case中需要多行业务代码示例
    • 四、Switch表达式增强示例四
      • 4.1、jdk17 case中支持对象的类型匹配示例

一、Switch表达式增强示例一

该特性先后由JDK12的JEP 325: Switch Expressions(Preview)、JDK13的JEP 354: Switch Expressions (Preview)引入,并在JDK14的JEP 361: Sitch Expressions正式转正。

1.1、传统的方式 case中变量赋值示例

  • 传统的方式 case中变量赋值代码示例

    package com.xz.jdk17;
    /*** @author: xz* @since: 2024/1/22 22:21* @description: 传统的方式 case中变量赋值示例*/
    public class Test1 {public static void main(String[] args) {var name="张三";String alias;switch (name) {case "张三":alias = "男性";break;case "李四":alias = "女性";break;default:alias = "未知";break;}System.out.println(alias);}
    }
  • 输出结果
    在这里插入图片描述

1.2、jdk17 case中变量赋值示例

  • jdk17 case中变量赋值代码示例

    package com.xz.jdk17;/*** @author: xz* @since: 2024/1/22 22:22* @description: jdk17 case中变量赋值示例*/
    public class Test2 {public static void main(String[] args) {var name="张三";String alias =switch (name) {case "张三"->"男性";case "李四"->"女性";default->"未知";};System.out.println(alias);}
    }
    
  • 输出结果
    在这里插入图片描述

二、Switch表达式增强示例二

2.1、传统的方式 case中值匹配多个示例

  • 传统的方式 case中值匹配多个代码示例

    package com.xz.jdk17;/*** @author: xz* @since: 2024/1/22  22:09* @description: 传统的方式 case中值匹配多个示例*/
    public class Test3 {public static void main(String[] args) {var name="张三";String alias;switch (name) {case "李四":case "王五":alias = "男性";break;case "张三":case "赵六":alias = "女性";break;default:alias = "未知";break;}System.out.println(alias);}}
    
  • 输出结果
    在这里插入图片描述

2.2、jdk17 case中值匹配多个示例

  • jdk17 case中值匹配多个代码示例

    package com.xz.jdk17;/*** @author: xz* @since: 2024/1/22 22:18* @description: jdk17 case中值匹配多个示例*/
    public class Test4 {public static void main(String[] args) {var name="张三";String alias =switch (name) {case "李四","王五"->"男性";case "张三","赵六"->"女性";default->"未知";};System.out.println(alias);}
    }
  • 输出结果
    在这里插入图片描述

三、Switch表达式增强示例三

3.1、传统的方式 case中需要多行业务代码示例

  • 传统的方式 case中需要多行业务代码示例

    package com.xz.jdk17;/*** @author: xz* @since: 2024/1/22 22:24* @description:  传统的方式 case中需要多行业务代码示例*/
    public class Test5 {public static void main(String[] args) {var name="张三";String alias;switch (name) {case "李四":case "王五":System.out.println("---男性---");alias = "男性";break;case "张三":case "赵六":System.out.println("---女性---");alias = "女性";break;default:System.out.println("---未知---");alias = "未知";break;}System.out.println(alias);}
    }
  • 输出结果
    在这里插入图片描述

3.2、jdk17中 case中需要多行业务代码示例

  • jdk17中 case中需要多行业务代码示例

    package com.xz.jdk17;/*** @author: xz* @since: 2024/1/22 22:25* @description: jdk17中 case中需要多行业务代码示例*/
    public class Test6 {public static void main(String[] args) {var name="张三";String alias =switch (name) {case "李四","王五"->{System.out.println("---男性---");yield "男性";}case "张三","赵六"->{System.out.println("---女性---");yield "女性";}default->{System.out.println("---未知---");yield "未知";}};System.out.println(alias);}
    }
    
  • 输出结果
    在这里插入图片描述

四、Switch表达式增强示例四

4.1、jdk17 case中支持对象的类型匹配示例

  • jdk17 case中支持对象的类型匹配 代码示例

    package com.xz.jdk17;/*** @author: xz* @since: 2024/1/22 22:34* @description: jdk17 case中支持对象的类型匹配*/
    public class Test7 {public static void main(String[] args) {Object obj = "张三";String patternMatchSwitch = getPatternMatchSwitch(obj);System.out.println(patternMatchSwitch);}private static String getPatternMatchSwitch(Object obj){return switch (obj) {case null->"obj is null";case Integer i ->String.format("Integer i:%s",i);case Long l ->String.format("Long l:%s",l);case Double d ->String.format("Double d:%s",d);case String str ->String.format("String str:%s",str);default -> obj.toString();};}
    }
    
  • 输出结果
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/422884.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用vue-pdf插件加载pdf

安装: // 安装这个版本,其它版本会有千奇百怪的错,这个版本和4.0.0都是可以的 cnpm install vue-pdf4.2.0// 安装pdfjs-dist cnpm install pdfjs-dist2.5.207 使用: // 我的css样式是pxToRem,友友们使用可能样式会有…

Nginx查看并发连接数

前言 需要依赖于nginx的http_stub_status_module模块http://nginx.org/en/docs/ 查看是否已经安装此模块 windows: linux: 添加/status 在server段内,添加如下配置: server {listen 80;server_name localhost;root "D:/WWW/local…

UG制图-视图与投影

当我们进入图纸页后,我们需要对产品进行投影然后进行标注 注意:如果是从零件3D中直接进入制图,默认情况下图框所在的图层是不显示的,我们可以通过菜单或者快捷键ctrl L进入图层设置模块,将图层170和173勾选为显示 我…

基于Altium Designer 10设计双层印刷电路板的详细步骤

基于Altium Designer 10设计双层印刷电路板的详细步骤 一、基于Altium Designer 10设计双层印刷电路板总纲二、、基于Altium Designer 10设计双层印刷电路原理图三、制作集成库(包括原理图、PCB封装库、PCB 3D库)1、新建集成库2、新建原理图库3、绘制原理图库(1)、手工绘制…

Spring 声明式事务 @Transactional(基本使用)

概述 声明式事务的实现很简单,只需要在需要事务的⽅法上添加 Transactional 注解就可以实现了.⽆需⼿动开启事务和提交事务,进⼊⽅法时⾃动开启事务,⽅法执⾏完会⾃动提交事务,如果中途发⽣了 没有处理的异常会⾃动回滚事务. Transactional 的基本使用 废话不多说,…

Linux的一些快捷键(hot keyboard)

Ctrl Alt t:打开bash(就是命令框窗口) Ctrl Alt F3~F6:打开tty终端(纯命令行终端,每个Linux发行版不相同,我的是Ubuntu20版) Alt F4:关闭当前窗口(Windo…

【 CSS 】基础 2

“生活就像骑自行车,想要保持平衡,就得不断前行。” - 阿尔伯特爱因斯坦 CSS 基础 2 1. emmet 语法 1.1 简介 Emmet语法的前身是 Zen coding,它使用缩写,来提高 HTML / CSS 的编写速度, VSCode 内部已经集成该语法。…

怎么去除水中的溴酸盐

饮用水溴酸盐超标已成为影响公众健康的严重问题。本文从专业技术角度出发,分析了饮用水中溴酸盐的来源、危害以及去除工艺,并探讨了各种工艺的优劣势。目的在于为饮用水处理提供科学参考,以保障公众健康。 一、饮用水中溴酸盐的来源与危害 …

怎么使用AI人工智能抠图?不妨试试这样做

在数字时代的浪潮中,人工智能技术如春雨般悄然渗透到各个领域,其中尤以图像处理领域为甚。在这场技术的革新中,AI抠图应运而生,它凭借自动识别和提取图像中目标物体的神奇能力,成为图像处理领域的璀璨新星。通过背景与…

国产品牌GC6609与TM2209的参数分析,为什么适用于3D打印机,医疗器械等产品中

步进电机驱动的应用方案目前市场上大多选用国外品牌的电机驱动器,其中trinamic的TMC2208/2209在这一块的应用很广泛。但是由于市场越来越应激。,当前对于产品开发成本要求也越来越低,国产品地准出了相应的TMC2208/2209,因此trinam…

《WebKit 技术内幕》学习之七(2): 渲染基础

2 网页层次和RenderLayer树 2.1 层次和RenderLayer对象 前面章节介绍了网页的层次结构,也就是说网页是可以分层的,这有两点原因,一是为了方便网页开发者开发网页并设置网页的层次,二是为了WebKit处理上的便利,也就是…

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(14)-Fiddler断点(breakpoints)实战,篡改或伪造数据

1.简介 上一篇主要就讲解和分享Fiddler断点的理论和操作,今天宏哥就用具体例子,将上一篇中的理论知识实践一下。而且在实际测试过程中,有时候需要修改请求或响应数据,或者直接模拟服务器响应,此时可以使用fiddler进行…