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