首页 > 其他分享 >记录一些JDK的新特性~持续更新

记录一些JDK的新特性~持续更新

时间:2022-11-24 10:22:53浏览次数:32  
标签:result JDK str1 System 更新 字符串 特性 println out

1、record快速定义类

@Test
    public void testRecord() {

        /**
         * JDK16新特性
         *
         * @param start
         * @param end
         */
        record qiu(int start, int end) {
            int sum() {
                return qiu.this.start + qiu.this.end;
            }
        }
        qiu q1 = new qiu(1, 2);
        System.out.println("q1 = " + q1);
        qiu q2 = new qiu(3, 4);
        System.out.println("q2 = " + q2);
        System.out.println(q1.equals(q2));
        // 调用方法
        System.out.println("q1.sum() = " + q1.sum());
        System.out.println("q2.sum() = " + q2.sum());
    }

2、字符串的新方法

    /**
     * isBlank():如果字符串为空或字符串仅包含空格(包括制表符),则返回 true。注意与isEmpty() 不同,isEmpty()仅在长度为 0 时返回 true。
     * lines():将字符串拆分为字符串流,每个字符串包含一行。
     * strip() : 分别从开头和结尾;
     * stripLeading()/stripTrailing()仅开始和仅结束删除空格。
     * repeat(int times):返回一个字符串,该字符串采用原始字符串并按指定的次数重复该字符串。
     * readString():允许从文件路径直接读取到字符串。
     * writeString(Path path):将字符串直接写入指定路径处的文件。
     * indent(int level):缩进字符串的指定量。负值只会影响前导空格。
     * transform(Function f):将给定的 lambda 应用于字符串。
     */
    @SneakyThrows
    @Test
    public void testNewStringMethod() {
        String str1 = "";
        System.out.println(str1.isBlank()); // true
        System.out.println(str1.isEmpty()); // true
        str1 = "   ";
        System.out.println(str1.isBlank()); // true
        System.out.println(str1.isEmpty()); // false
        str1 = "\r";
        System.out.println(str1.isBlank()); // true
        System.out.println(str1.isEmpty()); // false
        str1 = "\r\n";
        System.out.println(str1.isBlank()); // true
        System.out.println(str1.isEmpty()); // false

        System.out.println("============================================================");

        String str2 = "hello qiu \r\n qiu 我的最爱 JDK17 \n\r!\r";
        Stream<String> stream = str2.lines();
        stream.forEach(System.out::println);

        System.out.println("============================================================");

        String strip = str2.strip();
        System.out.println("strip = " + strip);
        System.out.println("str2.stripTrailing() = " + str2.stripTrailing());
        System.out.println("str2.stripIndent() = " + str2.stripIndent());
        System.out.println("str2.stripLeading() = " + str2.stripLeading());

        System.out.println("============================================================");

        String str3 = "qiu";
        String repeat = str3.repeat(3);
        System.out.println("repeat = " + repeat);

        System.out.println("============================================================");
        String path = "F:\\a.txt";
        Path of = Path.of(path);
        String string = Files.readString(of);
        System.out.println("readString = " + string);

        List<String> asList = Arrays.asList("1", "2", "3", "4", "5");
        // Files.write(Paths.get("./test"),list, StandardOpenOption.APPEND);
        Files.write(Paths.get("F:\\a.txt"), asList, StandardCharsets.UTF_8, StandardOpenOption.APPEND);


        Path writeString = Files.writeString(of, "writeString", StandardOpenOption.APPEND);
        System.out.println("writeString = " + writeString);
        System.out.println("============================================================");

        String path3 = "F:\\a.txt";
        System.out.println(path3.indent(2));
    }

3、switch优雅的写法

// 以前的写法
String result = "";
int caseNum = 4;
switch (caseNum){
	case 1 :
		result = "zs";
		break;
	case  2 :
		result = "ls";
		break;
	case 3 :
		result = "ww";
		break;
	default:
		result = "qiuqiu";
}
System.out.println("result = " + result);

// 现在的写法
result = switch (caseNum) {
	case 1 -> "张三";
	case 2 -> "李四";
	case 3 -> "王五";
	default -> "秋秋";
};
System.out.println("result = " + result);

标签:result,JDK,str1,System,更新,字符串,特性,println,out
From: https://www.cnblogs.com/qbbit/p/16910913.html

相关文章

  • Java帝国的诞生、Java的特性、Java的版本
    Java帝国的诞生C&C++1972年C诞生贴近硬件、运行极快、效率极高操作系统,编译器,数据库,网络系统等指针和内存管理1982年C++诞生面向对象兼容C图形领域、游戏等J......
  • 关于Jdk线程池
    主要参数corepoolSize 核心线程数量maximumPoolSize最大线程数量threadFactory线程工厂用来生成线程workQueue工作队列keepAliveTime线程的闲置存活时间reje......
  • java8新特性
    什么是函数式(Functional)接口只包含一个抽象方法的接口,称为函数式接口。你可以通过Lambda表达式来创建该接口的对象。(若Lambda表达式抛出一个受检异常(即:非运行时异常),那么......
  • 面向对象的三大特性
    ​ 面向对象的三大特性:封装:        我们把数据、一系列操作数据的函数封装到方法中,然后通过权限修饰符控制哪些方法可以让外知道,哪些只能自己知道,这样就能减少......
  • vue 中使用 this 更新数据的一次大坑
    情景说明:之前用vue做数据绑定更新时,发现一个莫名奇妙的问题。我在vue实例中声明了一个数组属性如books:[],在异步请求的回调函数中使用this.books=res.data.dat......
  • abap: 一个 成本估算不能标记和发布问题的跟踪调试案例(对于 0 物料, 0 成本评估被成
    一个成本估算不能标记和发布的跟踪案例: 为了避免用户数据的干扰,我首先将料号20101115的估算全都册除了(事务:CKR1)然后重新做估算。确认估算保存无错。 然后再用CK2......
  • npm 如何更新项目最新依赖包
    NPM是什么?Node软件包管理器(NPM)提供了各种功能来帮助你安装和维护项目的依赖关系。由于错误修复、新功能和其他更新,依赖关系可能会随着时间的推移而变得过时。你的项目......
  • Karmada跨集群优雅故障迁移特性解析
    摘要:在Karmada最新版本v1.3中,跨集群故障迁移特性支持优雅故障迁移,确保迁移过程足够平滑。本文分享自华为云社区《​​Karmada跨集群优雅故障迁移特性解析​​》,作者:Karma......
  • jdk 的安装和配置
    JDK的下载与安装: 百度直接搜索JDK,打开Oracle的jdk下载网页,根据自己电脑的系统位数下载安装合适的JDK(记住JDK的安装路径,后续配置环境变量需要用到)JDK的下载地址:https://......
  • Mongodb更新操作
    MongoDB提供以下方法来更新集合中的文档:update:更新或替换匹配指定过滤器的单个文档,或更新与指定过滤器匹配的所有文档,要更新多个文档,请使用multi选项。updateOne:更新单个......