当前位置: 首页 > news >正文

Java12~14 switch语法

  JDK8以后的语法没学习了,现在时代发展这么快,所以得加紧时间学习了。JDK12只有一个特性就是switch语法,算是比较容易学习的一个版本吧。总体来说就是三部分内容。具体内容可以看JEP-325的内容。

箭头语法

  每个case可以放箭头了。以下是一个例子:

public class SwitchDemo {public static void main(String[] args) throws IOException {System.out.println("请输入一个正整数:");int r = System.in.read();switch (r) {case '1', '2' -> System.out.println("小于3");case '3' -> System.out.println("等于3");default -> System.out.println("大于3");}}
}

switch作为表达式

  现在switch语句块可以作为表达式赋值给变量了。在以前是需要每个case块里写上赋值语句。对于这个新特性,我写了一个示例代码:

public class SwitchDemo2 {public static void main(String[] args) throws IOException {System.out.println("请输入一个正整数:");int r = System.in.read();String day = switch (r) {case '1' -> "Monday";case '2' -> "Tuesday";case '3' -> "Wednesday";case '4' -> "Thursday";case '5' -> "Friday";case '6' -> "Saturday";case '7' -> "Sunday";default -> null;};System.out.println(day);}
}

break/yield返回值

  在case块里,如果返回值需要复杂运算的,可以先写运算语句,再用break关键字来返回。但是这个关键字马上在新版本JDK13中被取消了。JEP-325中有这个例子:

Most switch expressions will have a single expression to the right of the “case L ->” switch label. In the event that a full block is needed, we have extended the break statement to take an argument, which becomes the value of the enclosing switch expression.
int j = switch (day) {
  case MONDAY -> 0;
  case TUESDAY -> 1;
  default -> {
    int k = day.toString().length();
    int result = f(k);
    break result;
  }
};

  但是这个代码只能在JDK12能编译通过,在JDK13中需要把break换成yield关键字。所以这样写才能编译通过:

public class SwitchDemo3 {public static void main(String[] args) throws IOException {System.out.println("请输入一个正整数:");int r = System.in.read();String s= "Foo";String day = switch (r) {case '1' -> "Monday";case '2' -> "Tuesday";case '3' -> "Wednesday";case '4' -> "Thursday";case '5' -> "Friday";case '6' -> "Saturday";case '7' -> "Sunday";default -> {System.err.println("一个星期只有7天");yield "不知道怎么说";}};System.out.println(day);}
}

相关文章:

Java12~14 switch语法

JDK8以后的语法没学习了,现在时代发展这么快,所以得加紧时间学习了。JDK12只有一个特性就是switch语法,算是比较容易学习的一个版本吧。总体来说就是三部分内容。具体内容可以看JEP-325的内容。 箭头语法 每个case可以放箭头了。以下是一个例…...

小狐狸ChatGPT智能聊天系统源码v2.7.6全开源Vue前后端+后端PHP

测试环境包括Linux系统的CentOS 7.6,宝塔面板,PHP 7.4和MySQL 5.6。网站的根目录是public, 使用thinkPHP进行伪静态处理,并已开启SSL证书。 该系统具有多种功能,包括文章改写、广告营销文案创作、编程助手、办公达人…...

The Rise and Potential of Large Language Model Based Agents: A Survey

OpenAI AI的应用研究主管Lilian Weng发布了关于AI Agents的《大语言模型(LLM)支持的自主代理》,在文章中她定义了基于LLM构建AI Agents的应用框架:AgentLLM(大型语言模型)记忆(Memory&#xff0…...

【GPT-SOVITS-06】特征工程-HuBert原理

说明:该系列文章从本人知乎账号迁入,主要原因是知乎图片附件过于模糊。 知乎专栏地址: 语音生成专栏 系列文章地址: 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…...

ros小问题之差速轮式机器人轮子不显示(rviz gazebo)

在rviz及gazebo练习差速轮式机器人时,很奇怪,只有个机器人的底板及底部的两个万向轮,如下图, 后来查看相关.xacro文件,里面是引用包含了轮子的xacro文件,只需传入不同的参数即可调用生成不同位置的轮子&…...

网络安全实训Day5

写在前面 昨天忘更新了......讲的内容不多,就一个NAT。 之前记的NAT的内容:blog.csdn.net/Yisitelz/article/details/131840119 网络安全实训-网络工程 NAT 公网地址与私网地址 公网地址 可以在互联网上被寻址,由运营商统一分配全球唯一的I…...

【Unity入门】详解Unity中的射线与射线检测

目录 前言一、射线的创建方法二、射线检测1、Raycast()Raycast()不使用射线RayRaycast()使用射线Ray 2、RaycastAll()使用射线RayRaycastAll() 不使用射线Ray 3、射线的碰撞信息 三、示例四、具体使用场景射线的调试方法1、Debug.DrawLine()2、Debug.DrawRay利用Gizmos 前言 碰…...

实验11-2-5 链表拼接(PTA)

题目: 本题要求实现一个合并两个有序链表的简单函数。链表结点定义如下: struct ListNode {int data;struct ListNode *next; }; 函数接口定义: struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2); 其中lis…...

Mybatis Plus + Spring 分包配置 ClickHouse 和 Mysql 双数据源

目录 一、背景 二、各个配置文件总览(文件位置因人而异) 2.1 DataSourceConfig 2.2 MybatisClickHouseConfig (ClickHouse 配置类) 2.3 MybatisMysqlConfig(Mysql 配置类) 2.4 application.propertie…...

27-3 文件上传漏洞 - 文件类型绕过(后端绕过)

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 导语 后端校验由开发决定是检测文件后缀,还是文件内容。 文件类型绕过(Content-Type) 1)MIME 类型 定义:MIME(Multipurpose Internet Mail Extensions)类型是一种标准,…...

widget一些控件的使用

QRadioButton使用 先使用ui界面拖拽创建radio button #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->male->setChecked(true);//选中按钮ui->o…...

Python基础(七)之数值类型集合

Python基础(七)之数值类型集合 1、简介 集合,英文set。 集合(set)是由一个或多个元素组成,是一个无序且不可重复的序列。 集合(set)只存储不可变的数据类型,如Number、…...

电脑充电器能充手机吗?如何给手机充电?

电脑充电器可以给手机充电吗? 电脑充电器可以给手机充电,但前提是电脑充电器的功率输出与手机的功率匹配且接口匹配。 假设电脑充电器的输出功率为5V/2A,手机也支持5V/2A的输入功率。 只要接口匹配,就可以使用电脑充电器给手机充…...

矩阵中移动的最大次数

文章目录 所属专栏:BFS算法 题目链接 思路如下: 1.首先我们需要从第一列开始遍历,寻找每一个都能够满足条件的位置,将它插入到数组里面 2.第一列遍历完了后我们先判断第一列的数是否都满足条件插入到数组里面,如果数组为空&#…...

Linux:系统初始化,内核优化,性能优化(3)

优化系统的文件句柄数(全局) 也就是系统的最大文件数量 查看最大数量 cat /proc/sys/fs/file-max 当我们的服务器有非常大的一个数据并发的时候十几二十万的文件需要去配置,可能这个是远远不够的,我们就要去修改 vim /etc/sy…...

使用 GitHub Actions 通过 CI/CD 简化 Flutter 应用程序开发

在快节奏的移动应用程序开发世界中,速度、可靠性和效率是决定项目成功或失败的关键因素。持续集成和持续部署 (CI/CD) 实践已成为确保满足这些方面的强大工具。当与流行的跨平台框架 Flutter 和 GitHub Actions 的自动化功能相结合时,开发人员可以创建无…...

微软 CEO Satya Nadella 的访谈

Nicolai: 大家好。我刚经历了人生中最不可思议的事情,我有幸采访了微软的 CEO、Satya Nadella。微软现在是全球市值最高的公司。真是太棒了,请继续关注。 第一章 微软的发展与平台转变 Nicolai: Satya,你是全球市值最高公司的 CEO&#xff…...

万界星空科技商业开源MES,技术支持+项目合作

商业开源的一套超有价值的JAVA制造执行MES系统源码 亲测 带本地部署搭建教程 教你如何在本地运行运行起来。 开发环境:jdk11tomcatmysql8springbootmaven 可以免费使用,需要源码价格便宜,私信我获取。 一、系统概述: MES制造执…...

Docker Mysql无root账户创建最高权限用户

创建最高权限用户 进入 MySQL 容器的命令行界面。您可以使用以下命令&#xff1a; 修改配置文件my.cnf 无密码进入 [mysqld]下输入 skip-grant-tables重启mysql容器 进入容器内部 container_name 容器ID或name docker restart mysql docker exec -it <container_name>…...

常用芯片学习——DS3231M芯片

DS3231M RTC实时时钟 芯片介绍 DS3231M是一款低成本、极其精确的 I2C 实时时钟 &#xff08;RTC&#xff09;。该设备集成了电池输入&#xff0c;并在设备主电源中断时保持准确的计时。微型电子机械系统 &#xff08;MEMS&#xff09; 谐振器的集成提高了器件的长期精度&…...

STM32中断优先级到底怎么分?用医生叫号系统讲透NVIC抢占与响应优先级

STM32中断优先级到底怎么分&#xff1f;用医生叫号系统讲透NVIC抢占与响应优先级 在嵌入式系统开发中&#xff0c;实时响应能力往往是衡量系统性能的关键指标。想象一下&#xff0c;当您正在全神贯注地编写代码时&#xff0c;突然手机来电、微信消息和邮件通知同时响起——您会…...

vcpkg, 开源的跨平台C/C++包管理器介绍和使用

文章目录 vcpkg介绍和使用一、什么是vcpkg&#xff1f;vcpkg的核心优势 二、vcpkg安装&#xff08;Windows/Linux/macOS通用&#xff09;前置条件1\. 克隆vcpkg仓库2\. 执行初始化脚本Windows系统Linux/macOS系统 3\. &#xff08;可选&#xff09;配置全局可用&#xff08;推荐…...

E-ROBOT:融合熵正则化与鲁棒截断的最优传输新框架

1. E-ROBOT框架&#xff1a;从理论动机到核心思想拆解在机器学习和统计学中&#xff0c;我们常常需要比较和度量两个概率分布之间的差异。最优传输&#xff08;Optimal Transport, OT&#xff09;为此提供了一个优雅且几何直观的数学框架&#xff1a;它寻找一个“运输计划”&am…...

Windows用户必看!终极免费的PDF处理工具Poppler快速安装指南

Windows用户必看&#xff01;终极免费的PDF处理工具Poppler快速安装指南 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为Windows系统上处理P…...

Seraphine:英雄联盟玩家的智能游戏助手完整指南

Seraphine&#xff1a;英雄联盟玩家的智能游戏助手完整指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine Seraphine是一款基于英雄联盟官方LCU API开发的智能游戏助手&#xff0c;专为《英雄联盟》玩家设计…...

AI赋能引力波数据分析:WCD深度学习框架从噪声中探测暗物质信号

1. 项目概述&#xff1a;当引力波遇见AI&#xff0c;如何从噪声中“看见”暗物质&#xff1f;在引力波天文学这个前沿领域&#xff0c;我们正面临一个激动人心又充满挑战的时代。自从LIGO首次直接探测到引力波以来&#xff0c;我们不仅“听”到了黑洞并合的宇宙巨响&#xff0c…...

基于Spring Boot的高性能分布式定时任务调度系统架构设计与实现原理

基于Spring Boot的高性能分布式定时任务调度系统架构设计与实现原理 【免费下载链接】campus-imaotai i茅台app自动预约&#xff0c;每日自动预约&#xff0c;支持docker一键部署&#xff08;本项目不提供成品&#xff0c;使用的是已淘汰的算法&#xff09; 项目地址: https:…...

不止于播放:用Unity Video Player的RenderTexture模式,轻松实现游戏内电视、监控屏效果

超越基础播放&#xff1a;用Unity VideoPlayer打造沉浸式动态屏幕效果在游戏开发中&#xff0c;环境细节往往是区分平庸与卓越作品的关键。想象一下&#xff1a;玩家走进一个废弃的安全屋&#xff0c;墙上的监控屏幕闪烁着模糊的画面&#xff1b;或是科幻基地中&#xff0c;数据…...

HTTPS静态资源403/404根因排查:从Nginx配置到SELinux权限

1. 这不是SSL证书的问题&#xff0c;而是HTTP服务配置的“隐身故障”你刚在云服务商控制台花了几十块钱买了张正规CA签发的SSL证书&#xff0c;上传到Nginx或Apache&#xff0c;配好了443端口&#xff0c;https://yourdomain.com打开首页也绿锁高亮&#xff0c;一切看起来都对—…...

麒麟系统启动卡住别慌!这可能是磁盘文件系统坏了,试试这几条Linux命令自救

麒麟系统启动卡顿故障排查指南&#xff1a;从原理到实战的磁盘修复方案 当你的麒麟系统突然卡在启动界面&#xff0c;屏幕上只留下"Boot From Harddisk"或EFI stub信息时&#xff0c;那种焦虑感我深有体会。作为一名经历过数十次类似故障排查的技术顾问&#xff0c;我…...