目录
- 一、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(); }; } }
-
输出结果