java 11 新特性完整使用

一、新增字符串处理的方法 (java11 特性)

1、处理方法归列 (java11 特性)

在这里插入图片描述

2、String新增的方法 (java11 特性)

1、isBlank():判断字符串是否为空白 (java11 特性)

    @Test
    public void test1(){
      //isBlank():判断字符串是否为空白
        System.out.println("  \t  \t  \n  ".isBlank());

    }

2、strip():去除首尾空白 (java11 特性)


    @Test
    public void test1(){
//        strip():去除首尾空白
        System.out.println("-----" + "  \t abc \t  \n  ".strip() + "-------");
        System.out.println("-----" + "  \t abc \t  \n  ".trim() + "-------");

}

3、stripTrailing():去除尾部空格 (java11 特性)

    @Test
    public void test1(){
//        stripTrailing():去除尾部空格
        System.out.println("-----" + "  \t abc \t  \n  ".stripTrailing() + "-------");
}

4、stripTrailing():去除尾部空格 (java11 特性)

    @Test
    public void test1(){
//        stripLeading():去除首部空格
        System.out.println("-----" + "  \t abc \t  \n  ".stripLeading() + "-------");
}

5、repeat(int count):复制字符串 (java11 特性)

    @Test
    public void test1(){
//        repeat(int count):复制字符串
        String str1 = "abc";
        String str2 = str1.repeat(5);
        System.out.println(str2);

}

6、 lines().count():行数统计 (java11 特性)

    @Test
    public void test1(){
     // lines().count():行数统计
        String str3 = "abc\ndef\ng";
        System.out.println(str3.lines().count());
        }

二、Optional加强 (java11 特性)

Optional也增加了几个非常酷的方法,现在可以很方便的将-一个Optional 转换成一个Stream,或者当一个空Optional时给它-一个替代的。

1、java 8、9、10、11 特性对比 (java11 特性)

在这里插入图片描述

2、Optional.empty() 判断value是否为空 (java11 特性)

判断value是否为空

    @Test
    public void test2(){

        var op = Optional.empty();
        System.out.println(op.isPresent());//判断内部的value是否存在
        System.out.println(op.isEmpty());//判断内部的value是否为空
        }

3、orElseThrow():value非空,返回value (java11 特性)

orElseThrow():value非空,返回value;否则抛异常NoSuchElementException

    @Test
    public void test2(){
       op = Optional.of("abc");
        var obj = op.orElseThrow();
        System.out.println(obj);
        }

4、or:value非空,返回对应的Optional;value为空 (java11 特性)

or:value非空,返回对应的Optional;value为空,返回形参封装的Optional

//java11新特性二:Optional新增的方法
    @Test
    public void test2(){
        op = Optional.of("abc");
        Optional<String> op1 = Optional.of("hello");
//        op = Optional.empty();
        //or:value非空,返回对应的Optional;value为空,返回形参封装的Optional
        Optional<Object> op2 = op.or(() -> op1);
        System.out.println(op2);//

    }

三、局部变量类型推断的升级 (java11 特性)

1、必须要有类型, 可以加上var、只是一个小加强

    @Test
    public void test3(){
        //错误的形式: 必须要有类型, 可以加上var
        //  Consumer<String> con1 = (@Deprecated t) -> System.out.println(t.toUpperCase());
        // 正确的形式:
        // 使用var的好处是在使用lambda表达式时给参数加上注解。
         Consumer<String> con2 = (@Deprecated var t) -> System.out.println(t.toUpperCase());

    }

四、HttpClient替换原有的HttpURLConnection (java11 特性)

    @Test
    public void test4(){
        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder(URI.create("http://127.0.0.1:8080/test/")).build();
            HttpResponse.BodyHandler<String> responseBodyHandler = HttpResponse.BodyHandlers.ofString();
            HttpResponse<String> response = client.send(request, responseBodyHandler);
            String body = response.body();
            System.out.println(body);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }
    @Test
    public void test5(){
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder(URI.create("http://127.0.0.1:8080/test/")).build();
        HttpResponse.BodyHandler<String> responseBodyHandler = HttpResponse.BodyHandlers.ofString();
        CompletableFuture<HttpResponse<String>> sendAsync = client.sendAsync(request, responseBodyHandler);
        sendAsync.thenApply(t -> t.body()).thenAccept(System.out::println);
        //HttpResponse<String> response = sendAsync.get();
        //String body = response.body();
        //System.out.println(body);


    }

五、更简化的编译运行程序 (java11 特性)

一个命令编译运行源代码的注意点:
➢执行源文件中的第一一个类,第-一个类必须包含主方法。
➢并且不可以使用其它源文件中的自定义类,本文件中的自定义类是可以使用的。


public class HelloJava {
	
	public static void main(String[] args) {
		System.out.println("Hello Java Simple");
		Teacher t = new Teacher();
		System.out.println(t);

		//Student s = new Student("Tom");
		//System.out.println(s);
	}
}

class Teacher {
	
	private String name;
	private int age;
	
	
}


class Test2 {
	
	public static void main(String[] args) {
		System.out.println("Test2. main");
	}
	
}

新建一个Hello.java、不需要javac、java 运行、java11直接java hello.java 一套完成

在这里插入图片描述

六、废弃Nashorn引擎 (java11 特性)

废除Nashorn javascript引 擎,在后续版本准备移除掉,有需要的可以考虑使用GraalVM。

七、ZGC (java11 特性)

1、介绍

1、GC是java主要优势之-一。 然而,当GC停顿太长,就会开始影响应用的响应时间。消除或者减少GC停顿时长,java将对更广泛的应用场景是-一个更有吸引力的平台。此外,现代系统中可用内存不断增长,用户和程序员希望JVM能够以高效的方式充分利用这些内存,并且无需长时间的GC暂停时间。

2、ZGC, A Scalable Low-Latency Garbage Collector(Experimental)ZGC,这应该是JDK11最为瞩目的特性,没有之一。 但是后面带了Experimental,说明这还不建议用到生产环境。

3、ZGC是一个并发,基于region,压缩型的垃圾收集器,只有root扫描阶段会STW(stop the world), 因此GC停顿时间不会随着堆的增长和存活对象的增长而变长。

2、优势

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值