JDK11 新特性 String去空白字符加强版方法 首次支持ZGC
JDK11的新特性语法 api 方面不多, 如果算上 JDK9,JDK 10 两个短期版本变化也不少,JDK 11 和 JDK8 一样是长期支持版本,商用一般都不会选择9,10这种零时版本。
jdk11 最显著的提高在于首次支持ZGC,但是只是支持,并不建议商用使用。ZGC 能支持 PB级别内存,和垃圾回收10毫秒以内的 STW。
package com.lomi.jdk11; import org.junit.Test; import org.junit.validator.AnnotationValidator; import org.junit.validator.ValidateWith; import javax.xml.transform.stax.StAXSource; import java.io.*; import java.net.HttpURLConnection; import java.net.URI; import java.net.URISyntaxException; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.*; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Supplier; import java.util.stream.Stream; /** * @author ZHANGYUKUN * @date 2022/6/17 */ public class JDK11NewTest { /** * 局部变量类型推断可以注解? */ @Test public <s> void test1(){ //这种一直都可以 @Deprecated Long a = 1L; //在jdk10 上是不能这样用的,用注解直接在var 标注的局部变量上加验证 Consumer<String> supplier = ( @ValidateWith(AnnotationValidator.class) var s )->{ }; } /** * String 的几个新方法 * trim()可以去除字符串前后的半角空白字符 所以最好用这个, * strip()可以去除字符串前后的全角和半角空白字符(我例子只用空格 回车换行之类的都是空白字符) */ @Test public <s> void test2(){ //aaa前面的空格第一个是半角,第二个是全角,全角也会认为是空白字符 System.out.println("strip:"+ " aaa ".strip() ); //aaa前面的空格第一个是半角,第二个是全角, 全角,不会被认为是空白字符 System.out.println("trim:"+ " aaa ".trim() ); //去前面的空格(可以去掉全角) System.out.println("stripLeading:"+ " aaa ".stripLeading() ); //去后面的空格(可以去掉全角) System.out.println("stripTrailing:"+ " aaa ".stripTrailing() ); //判断是否空白字符(全角也认为是空白字符) System.out.println("isBlank:"+ " ".isBlank() ); //重复多少次 System.out.println("repeat:"+ "zyk".repeat(2) ); } /** * Optional 添加 isEmpty(),等于 !Optional.ofNullable(null).isPresent() ,估计是觉得 isPresent 没有 isEmpty 直观 */ @Test public <s> void test3(){ System.out.println( Optional.ofNullable(null).isEmpty() ); System.out.println( !Optional.ofNullable(null).isPresent() ); System.out.println( Optional.ofNullable( new ArrayList<String>() ).isEmpty() ); System.out.println( !Optional.ofNullable( new ArrayList<String>() ).isPresent() ); } /** * 内置 HttpClient 代替 HttpURLConnecttion */ @Test public <s> void test4() throws URISyntaxException, IOException, InterruptedException { //比 HttpURLConnecttion 简单和很多,但是 我重来没用过 HttpURLConnecttion,以前也是用的三方的HttpClient HttpClient httpClient = HttpClient.newBuilder().build(); HttpRequest httpRequest = HttpRequest.newBuilder().GET().uri(new URI("https://www.baidu.com/")).build(); HttpResponse.BodyHandler<String> stringBodyHandler = HttpResponse.BodyHandlers.ofString(); String stringBody = httpClient.send(httpRequest,stringBodyHandler).body(); System.out.println( stringBody ); // HttpURLConnecttion 需要放回结果 是一个输入流,需要手动的读这个流然后再包装成Strin } }
能耍的时候就一定要耍,不能耍的时候一定要学。
天道酬勤,贵在坚持
posted on 2022-06-17 21:22 zhangyukun 阅读(171) 评论(0) 编辑 收藏 举报