1分钟了解 Java 中新的 Switch 表达式
2020/3/24 8:01:25
本文主要是介绍1分钟了解 Java 中新的 Switch 表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
2020 年 3 月份 Java 14 发布。
其中有一个有趣的更新:新的 Switch 表达式。
看代码前,看一下环境:MacOS,OpenJDK 14:
让我们先看一下 Java 中经典的 Switch 语句:
public class SwitchStatementDemo { enum MyDogs { Winston, Sprite, Buster, Oscar, Speedy } enum Breed { GoldenRetriever, ShetlandSheepdog, Teddy } public static void main(String[] args) { printBreed(MyDogs.Winston); printBreed(MyDogs.Oscar); printBreed(MyDogs.Speedy); } static void printBreed(MyDogs dog) { switch (dog) { case Winston: case Sprite: System.out.printf("%s, breed is %s %n", dog, Breed.GoldenRetriever); break; case Buster: case Oscar: System.out.printf("%s, breed is %s %n", dog, Breed.ShetlandSheepdog); break; case Speedy: System.out.printf("%s, breed is %s %n", dog, Breed.Teddy); break; default: throw new IllegalArgumentException( String.format("Unknown breed: %s", dog)); } } }
然后,让我们直接来看一下新的 Switch 表达式:
static void anotherPrintBreed(MyDogs dog) { String breed = switch (dog) { case Winston, Sprite -> "GoldenRetriever"; case Buster, Oscar -> "ShetlandSheepdog"; case Speedy -> "Teddy"; }; System.out.printf("%s, breed is %s %n", dog, breed); }
我们可以看到,新的 Switch 语句将不需要再写 case 标签,而是用 -> 代替。
同时,也可以省略 default 但是此时 case 中需要包含所有可能的输入值。
否则,default 还是必须的:
// 添加多一个 Nono。 enum MyDogs { Winston, Sprite, Buster, Oscar, Speedy, Nono } // 此时case 没有包括 Nono 的话,需要添加 default 语句 static void anotherPrintBreed(MyDogs dog) { String breed = switch (dog) { case Winston, Sprite -> "GoldenRetriever"; case Buster, Oscar -> "ShetlandSheepdog"; case Speedy -> "Teddy"; default -> "default"; }; System.out.printf("%s, breed is %s %n", dog, breed); }
使用 default, 我们还可以通过花括号添加额外的信息:
static void anotherPrintBreed(MyDogs dog) { String breed = switch (dog) { case Winston, Sprite -> "GoldenRetriever"; case Buster, Oscar -> "ShetlandSheepdog"; case Speedy -> "Teddy"; default -> { System.out.println("default语句被执行了。"); yield "default"; } }; System.out.printf("%s, breed is %s %n", dog, breed); }
default 语句必须给一个值,我们需要使用 yield 关键字来设置默认值。
以下是最终的代码例子:
public class SwitchStatementDemo { enum MyDogs { Winston, Sprite, Buster, Oscar, Speedy, Nono } enum Breed { GoldenRetriever, ShetlandSheepdog, Teddy } public static void main(String[] args) { // printBreed(MyDogs.Winston); // printBreed(MyDogs.Oscar); // printBreed(MyDogs.Speedy); anotherPrintBreed(MyDogs.Winston); anotherPrintBreed(MyDogs.Oscar); anotherPrintBreed(MyDogs.Speedy); anotherPrintBreed(MyDogs.Nono); } static void anotherPrintBreed(MyDogs dog) { String breed = switch (dog) { case Winston, Sprite -> "GoldenRetriever"; case Buster, Oscar -> "ShetlandSheepdog"; case Speedy -> "Teddy"; default -> { System.out.println("default语句被执行了。"); yield "default"; } }; System.out.printf("%s, breed is %s %n", dog, breed); } static void printBreed(MyDogs dog) { switch (dog) { case Winston: case Sprite: System.out.printf("%s, breed is %s %n", dog, Breed.GoldenRetriever); break; case Buster: case Oscar: System.out.printf("%s, breed is %s %n", dog, Breed.ShetlandSheepdog); break; case Speedy: System.out.printf("%s, breed is %s %n", dog, Breed.Teddy); break; default: throw new IllegalArgumentException( String.format("Unknown breed: %s", dog)); } } }
文晓欢欢
2020.03.23
这篇关于1分钟了解 Java 中新的 Switch 表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南