首页后端开发JAVAJava11新特性

Java11新特性

时间2023-07-16 00:13:02发布访客分类JAVA浏览1645
导读:简介 JDK 11 于2018年9月25日正式发布。作为自java 8 后的首个LTS版本,势必需要了解一下都有哪些新特性。 新特性 本文总结一些贴近实际开发中相关的特性作讨论,并不记录11所有的新特性 源文件直接运行 直接通过 jav...

简介

JDK 11 于2018年9月25日正式发布。作为自java 8 后的首个LTS版本,势必需要了解一下都有哪些新特性。

新特性

本文总结一些贴近实际开发中相关的特性作讨论,并不记录11所有的新特性

源文件直接运行

直接通过 java HelloWorld.java 执行 Java 源代码,不需要手动来编译。

新的工具类 HttpClient



HttpClient client = HttpClient.newHttpClient();
    

HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://www.baidu.com/"))
        .build();
    

//同步
HttpResponseString>
     response = client.send(request, HttpResponse.BodyHandlers.ofString());
    
System.out.println(response.statusCode());
    
System.out.println(response.body());
    

//异步
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
        .thenApply(HttpResponse::body)
        .thenAccept(System.out::println)
        .join();
    

输出:


200

!DOCTYPE html>
    
!--STATUS OK-->
    html>
     ...... /html>
    

!DOCTYPE html>
    
!--STATUS OK-->
    html>
     ...... /html>
    
  • 之前版本中的 HttpClient 为尝试版,java 11正式纳入
  • Java 11 中,HttpClient 的包名由 jdk.incubator.http 改为java.net.http,并通过CompleteableFuture实现非阻塞

String类增加新api


        String s = "\rddd\nrr";
    
        StreamString>
     lines = s.lines();
    
        lines.forEach(System.out::println);
    

        String s1="g";
    
        String repeat = s1.repeat(3);
    
        System.out.println(repeat);
    

        String ss=" 9 ";
    
        String strip = ss.strip();
    
        System.out.println(strip);
    

输出:


ddd
rr
ggg
9
  • String strip() 去除前后的空格
    • String stripLeading() 去除前面的空格
    • String stripTrailing() 去除后面的空格
  • boolean isBlank() 判断是否为空,或者只含有空格
  • Stream lines() 依据行终止符切割字符串,行终止符:\n,\r,\r\n
  • String repeat (int count) 将字符串重复 count 次,返回拼接后的新串

Optional新增api

  • isEmpty 判断是否为空

Stream新增api


StreamInteger>
     integerStream = Stream.of(1, 2, 3, 4, 5);
    
StreamInteger>
     newStream = integerStream.takeWhile(x ->
     x  4);
    
newStream.forEach(x ->
     System.out.println(x));
    

输出:


1
2
3
  • Stream.of() 创建一个流
  • takeWhile 从流中一直获取判定器为真的元素,一旦遇到元素为假,就终止处理,优势是不用遍历整个集合就可以获取到想要的数据
  • dropWhile 和takeWhile 相反

var类型增强

ListString>
     list = Arrays.asList("ac", "ad");
    

String title = list.stream().map((var x) ->
     x.toUpperCase()).collect(Collectors.joining(" "));
    
  • 可以在 lambda 中使用 var 进行类型推导
  • 个人看法实际开发中用处很少

飞行纪录器

商业版 JDK 中一直有一款低开销的事件信息收集工具,也就是飞行记录器(Java Flight Recorder),它可以对 JVM 进行检查、分析、记录等。当出现未知异常时可以通过记录进行故障分析。这个好用的工具在 Java 11 中将开源免费。所有人都可以使用这个功能了。

感兴趣的可以研究一下,实际开发中用的少。

集合转数组

ListString>
     s = Arrays.asList("ac", "ad");
    

引用

  • https://openjdk.java.net/projects/jdk/11/
  • https://www.oracle.com/java/technologies/downloads/#

  • https://docs.oracle.com/en/java/javase/11/

  • 版本说明:https://www.oracle.com/java/technologies/java-se-support-roadmap.html

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Java11新特性
本文地址: https://pptw.com/jishu/312731.html
日本vps主机租用多少钱 C++和Java的区别

游客 回复需填写必要信息