jdk8 - jdk17的一些新语法

switch表达式

主要变化

  • 可以接收返回值
  • 支持了lambda表达式
  • yield作为返回的关键字
  • 模式匹配即类型匹配推断
  • 便签组合
 public static void main(String[] args) {
        int a = 1;
        // 之前的switch语法
        switch (a) {
            case 0:
                System.out.println("输入0");
                break;
            case 1:
                System.out.println("输入1");
                break;
            case 2:
                break;
            default:
                System.out.println("不合法的输入");
        }

        // jdk17 switch
        String str = switch (a) {
            case 0, 1, 2 -> {
                yield "输入" + a;
            }
            default -> {
                yield "不合法输入";
            }
        };

    }
文本块

三个双引号可以定义一个文本块,结束的三个双引号不能和开始的在同一行。

   // 旧版本json字符串
        String text = "{\n" +
                "  \"name\": \"李白\",\n" +
                "  \"age\": 18,\n" +
                "}";


        // 文本块
        String text2 = """
                {
                    "name": "李白",
                    "age" : 32
                }
                """;
        System.out.println(text2);
instanceof模式匹配
 public static void main(String[] args) {
        //老版本
        if (obj instanceof String) {
            String str = (String) obj;
            System.out.println(str);
        }

        //jdk17
        if (obj instanceof String str) {
            System.out.println(str);
        }

    }
新的垃圾收集器

ZGC垃圾收集器 & Shenandoah

类型推断
var date = new Date();