Java 9

  • 新的创建集合的方法

 // [1, 2, 3, 4]
 List<Integer> integers = List.of(1, 2, 3, 4);
 // {1,2,3}
 Set<Integer> integerSet = Set.of(1, 2, 3);
 // {"hello":"world","hi":"java"}
 Map<String, String> hello = Map.of("hello", "world", "hi", "java");
  • Stream扩展:ofNullable、iterate、takeWhile、dropWhile、Optional扩展

  • try-with-resources 优化

  • 接口私有方法

  • 引入HttpClient

Java 1

  • 局部变量类型推断 var

java 11

  • 字符串强化:isBlank()、lines()、strip()、repeat(n)

  • 集合转对应类型的数组

     List<String> sampleList = Arrays.asList("felord.cn", "java 11");
             // array = {"felord.cn", "java 11"};
             String[] array = sampleList.toArray(String[]::new);
  • 断言取反 Predicate.not()

  • 文件中读写字符串内容更方便

     String dir= "C://yourDir";
     // 写入文件
     Path path = Files.writeString(Files.createTempFile(dir, "hello", ".txt"), "hello java 11");
     // 读取文件
     String fileContent = Files.readString(path);
  • HttpClient支持HTTP2

java12

  • 字符串缩进 String indent(int n):当n>0时,会在字符串的每一行开头插入n个空格,字符串整体右移。当n<0时,会在字符串的每一行开头删除n个空格,如果实际的空格数小于n,删除该行所有空格,但是并不会换行。

  • 字符串转换

     <R> R transform(Function<? super String, ? extends R> f)
     String txt = "hello ";
             // hello hello
             String s = txt.transform(str -> str.repeat(2));
  • 基于内容的文件匹配 Files.mismatch(Path,Path)

     // 文件对比
     Path p1 = Files.createTempFile("file1", "txt");
     Path p2 = Files.createTempFile("file2", "txt");
     Files.writeString(p1, "felord.cn");
     Files.writeString(p2, "felord.cn");
     // -1L 二者内容相同
     long mismatch = Files.mismatch(p1, p2);
  • Collectors::teeing

  • 数字化格式类CompactNumberFormat

java 13

  • 使用AppCDS的时候,就不在需要这么复杂了

  • ZGC 可以将未使用的堆内存返回给操作系统

  • Switch 表达式 (Preview)

     int i;
     switch (x) {
         case "1":
             i=1;
             break;
         case "2":
             i=2;
             break;
         default:
             i = x.length();
             break;
     }
     int i = switch (x) {
         case "1" -> 1;
         case "2" -> 2;
         default -> {
             int len = args[1].length();
             yield len;
         }
     };
  • 文本块

    String query = """
        SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`
        WHERE `CITY` = 'INDIANAPOLIS'
        ORDER BY `EMP_ID`, `LAST_NAME`;
    """;

java 14

  • instanceof模式匹配

    //在Java14之前,我们通常的写法如下:
    
    Object obj = "程序新视界";
    if(obj instanceof String){
     String str = (String) obj;
     System.out.println("关注公众号:" + str);
    } //通过java14的新特性,我们可以简化成如下方式:
    Object obj = "程序新视界";
    if(obj instanceof String str){
     System.out.println("关注公众号:" + str);
    }
  • Switch表达式 转正

  • 记录类型(Record Type)的引入

    //定义一个Record类型如下:
    public record Point(int x, int y) {
    } //使用Record操作如下:
    Point point = new Point(1,3);
    System.out.println(point.x());
    System.out.println(point.y());

java16

  • 矢量计算

  • Record类型在JDK14作为preview,在JDK15处于第二轮preview,在JDK16转正

  • instanceof的模式匹配在JDK14作为preview,在JDK15作为第二轮的preview,在JDK16转正

  • jpackage在JDK14引入,JDK15作为incubating工具,在JDK16转正,从jdk.incubator.jpackage转为jdk.jpackage。它支持Linux: deb and rpm、macOS: pkg and dmg、Windows: msi and exe

java17

  • 密封类(接口)(Sealed、permits 修饰符)

总结:java9到java17,常用新特性

  • 创建集合新的方法--9

  • try-with-resources--9

  • 引入HttpClient--9

  • 字符串强化--11

  • 集合转对应类型的数组--11

  • Switch 表达式--13-14

  • 模式匹配--14-14

  • 文本块--13-14

  • 记录类型(Record Type)--14-16

从Java 9 到 Java 17 新特性梳理的更多相关文章

  1. Java 17 新特性:switch的模式匹配(Preview)

    还记得Java 16中的instanceof增强吗? 通过下面这个例子再回忆一下: Map<String, Object> data = new HashMap<>(); da ...

  2. Java 各个版本中的新特性

    新特性你知道多少? Java 8 Lambda 表达式 接口增加默认方法等 方法引用 流 Stream Java 9 模块系统 交互式工具jshell .of() 创建不可变集合 接口支持私有方法 更 ...

  3. Java高新技术 JDK1.5之新特性

      Java高新技术  JDK1.5的新特性 知识概要:                 (1)静态导入 (2)可变参数 (3)增强for循环 (4)基本数据类型的自动拆箱和装箱 静态导入     ...

  4. Java9发布回顾Java 8的十大新特性

    java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...

  5. Java学习:JDK8的新特性

    Java学习:JDK8的新特性 一.十大特性 Lambda表达式 Stream函数式操作流元素集合 接口新增:默认方法与静态方法 方法引用,与Lambda表达式联合使用 引入重复注解 类型注解 最新的 ...

  6. c++17 新特性

    编译环境说明:gcc 8.1 + eclipse +windows 10 eclipse cpp默认支持c++14,做c++17开发时,需要手动进行配置. 1.关键字 1)constexpr c++1 ...

  7. Java Development Kit(JDK) 8 新特性(简述)

    一.接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法. 示例如下: interface Formula { calcul ...

  8. Java 14 可能带来什么新特性?

    JDK/Java 13 在一个月前已经发布,该版本带来了 5 大新特性,笔者观察到其中的 Text Blocks(文本块)特性似乎被讨论最多. 文本块特性与常见的 Python "" ...

  9. Java 13 即将发布,新特性必须抢先看!

    作者:h4cd 本文转载自开源中国(ID:oschina2013) 由于 Java 现在采取"半年发布一次新版本"的模式,所以 Java 12 的下一个版本 Java 13/JDK ...

随机推荐

  1. Java开发学习(七)----DI依赖注入之自动装配与集合注入

    一.自动配置 上一篇博客花了大量的时间把Spring的注入去学习了下,总结起来就两个字麻烦.麻烦在配置文件的编写配置上.那有更简单方式么?有,自动配置 1.1 依赖自动装配 IoC容器根据bean所依 ...

  2. Hashtable集合 --练习题_计算一个字符串中每个字符出现次数

    Hashtable集合 java.util.Hashtable<K,V>集合 implements Map<K,V>接口  Hashtable:底层也是一个哈希表,是一个线程安 ...

  3. final关键字用于修饰局部变量和修饰成员变量

    修饰变量 1. 局部变量--基本类型 基本类型的局部变量,被fifinal修饰后,只能赋值一次,不能再更改.代码如下: public class FinalDemo1 { public static ...

  4. 今天介绍一下自己的开源项目,一款以spring cloud alibaba为核心的微服务架构项目,为给企业与个人提供一个零开发基础的微服务架构。

    LaoCat-Spring-Cloud-Scaffold 一款以spring cloud alibab 为核心的微服务框架,主要目标为了提升自己的相关技术,也为了给企业与个人提供一个零开发基础的微服务 ...

  5. vlan配置

    VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的局域网在逻辑上划分成多个广播域的技术. 通过在交换机上配置VLAN,可以实现在同一个VLAN内的用户可以进行 ...

  6. harbor之HTTPS安装

    1.下载解压 # tar -xvf harbor-offline-installer-v1.7.6.tgz # cd /harbror 2.下载python2.7 # apt install pyth ...

  7. python 常用的魔法函数

    简介 在实际项目中,我们其实并不会太多的使用魔法函数,但是一些方法或者函数均是有魔法函数演变而来的,且在一些面试过程中会遇到一些关于常见方法的实现,就会牵扯到相应的魔法函数,此处将介绍一些我认为比较常 ...

  8. Win10系统下基于Docker构建Appium容器连接Android模拟器Genymotion完成移动端Python自动化测试

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_196 Python自动化,大概也许或者是今年最具热度的话题之一了.七月流火,招聘市场上对于Python自动化的追捧热度仍未消减,那 ...

  9. 内存问题难定位,那是因为你没用ASAN

    摘要:ASAN全称:Address Sanitizer,google发明的一种内存地址错误检查器.目前已经被集成到各大编译器中. 本文分享自华为云社区<内存定位利器-ASAN使用小结>,作 ...

  10. Java面试题(四)--RabbitMQ

    1.MQ有哪些使用场景?(高频) 异步处理:用户注册后,发送注册邮件和注册短信.用户注册完成后,提交任务到 MQ,发送模块并行获取 MQ 中的任务. 系统解耦:比如用注册完成,再加一个发送微信通知.只 ...