首页 > 编程语言 >Java17

Java17

时间:2023-10-04 18:56:49浏览次数:54  
标签:Java17 String format PersonRecord System println out

1.同时配置Java8和17环境

用户变量

2.新特性

public static void main(String[] args) {
        // 1.文本框
        String text = """
                {
                  "name": "小黑说Java",
                  "age": 18,
                  "address": "北京市西城区"
                }
                """;
        System.out.println(text);

        // 2.Switch
        String f = "a";
        switch (f) {
            case "a" -> System.out.println("a");
            case "b" -> System.out.println("b");
            default -> System.out.println("c");
        }
        // 返回值
        String res = switch (f) {
            case "a" -> "a";
            case "b" -> "b";
            default -> "c";
        };
        System.out.println(res);
        // 做多件事 yield返回
        String res1 = switch (f) {
            case "a" -> {
                System.out.println("a");
                yield "a";
            }
            case "b" -> "b";
            default -> "c";
        };
        System.out.println(res1);

        // 3.record关键字 用于创建不可变的数据类
        Person person1 = new Person("lwx1");
        Person person2 = new Person("lwx2");

        record PersonRecord(String name) {
            // 构造方法
            PersonRecord {
                System.out.println("PersonRecord构造方法");
            }
        }

        PersonRecord personRecord1 = new PersonRecord(person1.getName());
        PersonRecord personRecord2 = new PersonRecord(person2.getName());
        System.out.println(personRecord1);
        System.out.println(personRecord2);

        // 4.sealed class 密封类
        // 更好的控制哪些类可以对我定义的类进行扩展
        // 可以控制有哪些类可以对超类进行继承,

        // 5.instanceof 模式匹配
        // 对一个变量的类型进行判断,如果符合指定的类型,则强制类型转换为一个新变量。
        Object o = new Object();
        if (o instanceof Fruit fruit) {
            System.out.println("This furit is :" + fruit.getName);
        }

        // 6.Helpful NullPointerExceptions
        // 准确显示发生NPE的精确位置

        // 7.日期周期格式化 指示一天时间段
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("B");
        System.out.println(dtf.format(LocalTime.of(8, 0)));
        System.out.println(dtf.format(LocalTime.of(13, 0)));
        System.out.println(dtf.format(LocalTime.of(20, 0)));
        System.out.println(dtf.format(LocalTime.of(23, 0)));
        System.out.println(dtf.format(LocalTime.of(0, 0)));

        // 8.精简数字格式化支持
        NumberFormat fmt = NumberFormat.getCompactNumberInstance(Locale.ENGLISH, NumberFormat.Style.SHORT);
        System.out.println(fmt.format(1000));
        System.out.println(fmt.format(100000));
        System.out.println(fmt.format(1000000));

        // 9.Stream.toList()
        Stream<String> stringStream = Stream.of("a", "b", "c");
        List<String> stringList =  stringStream.toList();
        for(String s : stringList) {
            System.out.println(s);
        }
    }
  • 密封类
// 不想让Fruit在该包以外被扩展 通过关键字sealed声明为密封类,通过permits可以指定Apple,Pear类可以进行继承扩展。
// 子类指明是final,non-sealed或sealed的
public abstract sealed class Fruit permits Apple {

}
public non-sealed class Apple extends Fruit {
}

标签:Java17,String,format,PersonRecord,System,println,out
From: https://www.cnblogs.com/lwx11111/p/17742576.html

相关文章

  • JAVA17/JAVA21接口和多态机制
    day08-JAVAOOP课程目标1.【理解】什么是接口2.【掌握】接口的定义格式3.【掌握】接口的使用4.【理解】接口的成员特点5.【理解】类和接口抽象类和接口之间的关系6.【掌握】单继承多实现7.【理解】接口之间的多继承8.【掌握】接口的案例9.【理解】什么是多态......
  • JAVA17/JAVA21继承和抽象类
    day07-JAVAOOP课程目标1.【理解】什么是继承2.【掌握】继承的使用3.【理解】继承中的成员的特点4.【理解】super和this的作用5.【理解】什么是抽象类6.【掌握】抽象的使用继承继承概述​ 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,这个类就是......
  • JAVA17/JAVA21方法精讲
    day05_java基础课程目标1.【理解】什么是方法2.【掌握】方法的格式3.【理解】方法的执行流程4.【掌握】方法的案例5.【理解】方法的重载6.【理解】方法参数的传递方法概述什么是方法方法(method)完成某一个特定功能的代码块方法基本使用将资料中给大家提供的打......
  • Java17与相关框架支持版本SpringBoot、IDEA、Tomcat等
    相关框架需要的最低版本NameVersionJava17+SpringFramework6.0SpringBoot3.0Tomcat10.1Maven3.6.3+Gradle7.x(7.5orlater)and8.xUndertow2.3IntelliJIDEA2021.2+SpringFrameworkSpringFrameworkOverview::SpringFrame......
  • 从头学Java17-今天的Kotlin更香吗
    出于各种限制,很多公司依然停留在Java8,部分小伙伴转向了Kotlin。Kotlin作为静态编译语言,提供大量语法糖,而且编译后的字节码跟Java一致。当时,Java8于2014年发布,Kotlin于2016年,很多宣称的语法糖都是对比的Java8。不禁要问,相对今天的Java17,Kotlin优势还在吗?现在就用最新的Kotlin1.9......
  • 从头学Java17-Stream API(二)结合Record、Optional
    StreamAPIStreamAPI是按照map/filter/reduce方法处理内存中数据的最佳工具。本系列教程由Record讲起,然后结合Optional,讨论collector的设计。使用Record对不可变数据进行建模Java语言为您提供了几种创建不可变类的方法。可能最直接的是创建一个包含final字段的final类。......
  • Java17新特性及代码示例:还在使用Java8? 这5个Java17新功能,你会喜欢的
    SpringBoot3.0最低支持JDK17,各开源软件正在全面拥抱JDK17.有升级计划的调查受访者中,37%的人计划在未来六个月内升级到2021年9月份发布的LTS版本JDK17。另有25%的人计划在未来6到12个月内升级到JDK17。这5个你喜欢的JDK17新功能,会让你升级JDK17吗?1.record类(记录类)传统的......
  • Spring Boot 3.0.0 来啦!最小依赖 Java17!升还是不升?
    Spring官方于2022年1月20日发布SpringBoot3.0.0-M1版本,预示开启了SpringBoot3.0的里程碑。官方公告下的中文评论有点东西。。。熟悉的味道!就是那个味!  分享一篇朋友对SpringBoot3.0的介绍:生还是不生?SpringBoot3版本有起飞前兆,最小依赖Java17!一直......
  • 从头学Java17-Stream API(一)
    StreamAPIStreamAPI是按照map/filter/reduce方法处理内存中数据的最佳工具。本系列中的教程包含从基本概念一直到collector设计和并行流。在流上添加中继操作将一个流map为另一个流map流是使用函数转换其元素。此转换可能会更改该流处理的元素的类型,但您也可以在不更改......
  • 从头学Java17-Lambda表达式
    Lambda表达式这一系列教程,旨在介绍lambda的概念,同时逐步教授如何在实践中使用它们。回顾表达式、语句表达式表达式由变量、运算符和方法调用组成,其计算结果为单个值。您已经看到了表达式的示例,如下面的代码所示:intcadence=0;anArray[0]=100;System.out.println("......