jdk11

作者: 等一夏_81f7 | 来源:发表于2019-01-10 14:34 被阅读0次

    Local Var

    在Lambda表达式中,可以使用var关键字来标识变量,变量类型由编译器自行推断。

    // LocalVar.java package

    com.itranswarp.jdk11;

    import java.util.Arrays;

    public class LocalVar {

    public static void main(String[] args) {

    Arrays.asList("Java", "Python", "Ruby") .forEach((var s) -> { System.out.println("Hello, " + s); }); } }

    HttpClient

    List API

    对于List接口,新增了一个of(T...)接口,用于快速创建List对象:

    List<String> list = List.of("Java", "Python", "Ruby");

    List的toArray()还新增了一个重载方法,可以更方便地把List转换为数组。可以比较一下两种转换方法:

    // 旧的方法:传入String[]:

    String[] oldway = list.toArray(new String[list.size()]);

    // 新的方法:传入IntFunction:

    String[] newway = list.toArray(String[]::new);

    读写文件

    对Files类增加了writeString和readString两个静态方法,可以直接把String写入文件,或者把整个文件读出为一个String:

    Files.writeString(

       Path.of("./", "tmp.txt"), // 路径

      "hello, jdk11 files api", // 内容

      StandardCharsets.UTF_8); // 编码

    String s = Files.readString(

         Paths.get("./tmp.txt"), // 路径

          StandardCharsets.UTF_8); // 编码

    这两个方法可以大大简化读取配置文件之类的问题。

    String API

    String lines() 可以非常方便地按行分割字符串:

    Strings ="Java\nPython\nRuby";

    s.lines().forEach(System.out::println);

    新增repeat()方法,可以指定重复次数:

    System.out.println("-".repeat(10)); // 打印----------

    除了新增的API外,JDK11还带来了EpsilonGC,就是什么也不做的GC,以及ZGC,一个几乎可以做到毫秒级暂停的GC。ZGC还处于实验阶段,所以启动它需要命令行参数-XX:+UnlockExperimentalVMOptions -XX:+UseZGC。

    Character

    Character.toString(65)      $9 ==> "A"

    Path

    Path path = Path.of("e","text");

    System.out.println(path.toString());//e\text

    Objects

    1.比较大小

    int rest = Objects.compare("2","1", Comparator.naturalOrder());

    System.out.println(rest); //1  如果其中一个参数为null 将会抛出异常

    此时可以选择使用

    org.apache.commons.lang3.ObjectUtils. compare (T o1,T o2)

    2.equals and deepEquals 比较

    deepEquals  通常用来比较数组元素 特别是多维数组尤为有用,但是equals不能比较多为数组

    Objects.deepEquals(int1[][],int2[][])

    Pattern  asMatchPredicate()

    var matPred = Pattern.compile("aaa").asMatchPredicate()

    matPred.test("aaa") //true

    相关文章

      网友评论

          本文标题:jdk11

          本文链接:https://www.haomeiwen.com/subject/pkqarqtx.html