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();
            };
        }
    }
    
  • 输出结果
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React-Native项目矢量图标库(react-native-vector-icons)

系列文章目录 React-Native环境搭建(IOS)React-Native项目 — 关于IOS知识储备React-Native项目工程搭建(开发模板搭建)React-Native项目矢量图标库(react-native-vector-icons) 目录 系列文章目录前言一、…

斐波那契查找

斐波那契查找 概述步骤代码示例输出结果 概述 斐波那契查找是一种基于斐波那契数列的查找算法,用于在有序数组中查找目标元素的位置。与二分查找类似,斐波那契查找也是一种分治算法,它通过比较目标值与数组的中间元素来确定下一步的查找范围…

C++版QT:鼠标事件

鼠标常用的事件可以说有一下几种&#xff1a;鼠标按下、鼠标移动、鼠标移动、鼠标双击和鼠标滚轮事件。 当你想使用他们&#xff0c;需要包含头文件&#xff1a;#include <QMouseEvent> 需要对鼠标事件进行处理时&#xff0c;通常要重新实现以下几个鼠标事件处理函数&a…

设备对象(DEVICE_OBJECT)

设备对象(DEVICE_OBJECT) 每个驱动程序会创建一个或多个设备对象&#xff0c;用DEVICE_OBJECT数据结构表示。每个设备对象都会有一个指针指向下一个设备对象&#xff0c;因此就形成一个设备链。设备对象链的第一个设备是由DRIVER_OBJECT结构体中指明的。设备对象保存设…

UI自动化中的option选项配置

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

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

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

C++中命名空间、缺省参数、函数重载

目录 1.命名空间 2.缺省参数 3.函数重载 1.命名空间 在C中定义命名空间我们需要用到namespace关键字&#xff0c;后面跟上命名空间的名字&#xff0c;结构框架有点类似结构体&#xff08;如图所示&#xff09; 上面的代码我一一进行讲解&#xff1a; 1.我们先来说第三行和main函…

开源堡垒机JumpServer本地安装并配置公网访问地址

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpS…

基于CLIP4Clip的DRL的WTI模块实现

关于DRL的WTI模块&#xff1a; Weighted Token-wise Interaction&#xff1a; 直觉上&#xff0c;并非所有的单词和视频帧都同等重要。我们提供一种自适应方法&#xff0c;来调整每个标记的权重大小&#xff1a; 注&#xff1a;其中两个f函数都是MLP和softmax构成。 WTI的算…

使用STM32的SPI接口实现与外部传感器的数据交互

一、引言 外部传感器是嵌入式系统中常用的外设&#xff0c;用于检测环境参数、采集数据等。通过STM32微控制器的SPI接口&#xff0c;可以与外部传感器进行数据交互&#xff0c;从而实现数据的采集和控制。本文将介绍如何使用STM32的SPI接口实现与外部传感器的数据交互&#xff…

云计算任务调度仿真05

今天再分享一个新的调度框架deeprm 本项目基于hongzimao/deeprm&#xff0c;原作者还著有论文Resource Management with Deep Reinforcement Learning 。 这个框架研究的也蛮多的&#xff0c;我在一篇博士论文中也看到了基于此的研究工作&#xff0c;但是论文题目忘记了。 运…

【C++】入门(一)

前言&#xff1a; 本篇博客将带大家认识C&#xff0c;熟悉基本语法 文章目录 认识CC的诞生与发展C 在行业中的运用 一、命名空间1.1 命名空间的定义1.2 命名空间的使用1.3 命名空间的访问 二、C输入&输出输出操作符 <<输入操作符 >>换行符和刷新输出缓冲区关键…

如何在CentOS8使用宝塔面板本地部署Typecho个人网站并实现公网访问【内网穿透】

文章目录 前言1. 安装环境2. 下载Typecho3. 创建站点4. 访问Typecho5. 安装cpolar6. 远程访问Typecho7. 固定远程访问地址8. 配置typecho 前言 Typecho是由type和echo两个词合成的&#xff0c;来自于开发团队的头脑风暴。Typecho基于PHP5开发&#xff0c;支持多种数据库&#…

vmware 安装Rocky-9.3系统

安装系统截图 安装完成&#xff0c;启动 查看版本和内核 开启远程登陆授权 1、编辑配置文件 #提升权限&#xff0c;输入su,并输入密码 su #编辑ssh文件开启root远程登陆 vi /etc/ssh/sshd_config找到以下内容&#xff1a;#PermitRootLogin prohibit-password 添加&#xff1a…

C#winform上位机开发学习笔记5-串口助手的定时发送功能添加

1.功能描述 选择自动发送功能后&#xff0c;按照设定的发送时间发送发送框中的信息数据&#xff0c;设定时间可以手动输入&#xff0c;当手动输入信息无效&#xff08;非数字&#xff09;时&#xff0c;系统弹出错误提示&#xff0c;并将其设置为默认定时时间。 2.代码部分 步…

【MySQL进阶】视图_存储过程_存储函数_触发器

文章目录 视图基本介绍视图操作视图创建视图查询视图修改视图删除 存储过程基本介绍基本操作存储语法变量IF语句参数传递CASEWHILEREPEATLOOP游标 存储函数触发器基本介绍基本操作 总结 视图 基本介绍 视图概念&#xff1a;视图是一种虚拟存在的数据表&#xff0c;这个虚拟的表…

【Linux对磁盘进行清理、重建、配置文件系统和挂载,进行系统存储管理调整存储结构】

Linux 调整存储结构 前言一、查看磁盘和分区列表二、创建 ext4 文件系统&#xff0c;即&#xff1a;格式化分区为ext4文件系统。1.使用命令 mkfs.ext4 (make file system)报错如下&#xff1a;解决办法1&#xff1a;&#xff08;经测试&#xff0c;不采用&#xff09;X解决办法…

Docker-Jenkins编译android-app的两种方案

Docker-Jenkins编译android-app的两种方案 android开发使用jenkins编译&#xff0c;自动集成修改点/自动命名/自动备份&#xff0c;将修改的apk发布到测试服务器发布网盘&#xff0c;而不需要用通讯工具传来传去。 jenkins用在互联网开发编译比较常见&#xff0c;如果android开…

电力电子技术

文章目录 5 直流直流变流电路5.0 简介5.1 基本斩波电路5.1.1 降压斩波电路 Buck Chopper5.1.1.1 小纹波近似 5.1.2升压斩波电路 11 DC-DC 变换器数字控制11.1 基于单片机控制11.2 基于 DSP 控制11.3 基于 FPGA 控制 12 多相交错并联拓扑结构12.1 多相交错并联12.1 多相交错并联…

CS8370错误,这是由于使用了C# 7.3中不支持的功能

目录 背景: 第一种方法: 第二种办法: 背景: 在敲代码的时候&#xff0c;程序提示报错消息提示:CS8370错误&#xff0c;那么这是什么原因导致的&#xff0c;这是由于使用了C# 7.3中不支持的功能&#xff0c;不支持该功能&#xff0c;那就是版本太低我们就需要升级更高的版本&…