Java11的新特性

package com.hhf.test;

import org.assertj.core.util.Lists;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Java11Test {
    public static void main(String[] args) {
        // 1、本地变量类型推断
        test1();
        System.out.println("<====================end test1=======================>");
        // 2、字符串加强
        test2();
        System.out.println("<====================end test2=======================>");
        // 3、集合加强  Jdk 里面为集合(List/ Set/ Map)都添加了 of 和 copyOf 方法,它们两个都用来创建不可变的集合
        test3();
        System.out.println("<====================end test3=======================>");
        // 4、Stream 加强
        test4();
        System.out.println("<====================end test4=======================>");
        // 5、InputStream加强
        test5();
        System.out.println("<====================end test5=======================>");
        // 6、HTTP Client API 这是 Java 9 开始引入的一个处理 HTTP 请求的的孵化 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态,你可以在 java.net 包中找到这个 API
        test6();
        System.out.println("<====================end test6=======================>");
    }

    private static void test6() {
        var request = HttpRequest.newBuilder().uri(URI.create("http://ic-park.net:40000")).GET().build();
        var client = HttpClient.newHttpClient();
        try {
            // 同步
            var response = client.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.print(response.body());
            // 异步
            client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
                    .thenApply(HttpResponse::body)
                    .thenAccept(System.out::println);
            //client.sendAsync(request,HttpResponse.BodyHandlers.ofString()).thenApply(HttpResponse::body).thenAccept(System.out::println);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void test5() {
        var loader = ClassLoader.getSystemClassLoader();
        System.out.println(loader.getResource("application.properties").getPath());
        var is = loader.getResourceAsStream("application.properties");
        try {
            var parent = new File("F:\\tttttt");
            if(!parent.isDirectory()){
                parent.mkdirs();
            }
            var f = File.createTempFile("test110","txt",parent);
            var out = new FileOutputStream(f);
            is.transferTo(out);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void test4() {
        // 增加单个参数构造方法,可为null
        long count = Stream.ofNullable(null).count();
        System.out.println(count);
        // 增加 takeWhile 和 dropWhile 方法
        // 获取满足条件的值
        List<Integer> list = Stream.of(1, 3, 5, 2, 5, 1, 2).takeWhile(n -> n < 3).collect(Collectors.toList());
        // 找到满足条件的值删除
        List<Integer> list1 = Stream.of(1, 3, 5, 2, 5, 1, 2).dropWhile(m -> m < 5).collect(Collectors.toList());

        list.forEach(li -> {
            System.out.println("li的值:"+li+",");
        });
        list1.forEach(li1 -> {
            System.out.print("li1的值:"+li1+".");
        });
    }

    private static void test3() {
        // 测试list of()、copyOf()方法 ,注意是不可变集合
        var list = List.of("java","c++","php");
        var copy = List.copyOf(list);
        System.out.print("测试不可变集合的复制是否相等:");
        System.out.print(list == copy);
        list.forEach(l->{
            System.out.println(l);
        });
        copy.forEach(c->{
            System.out.println(c);
        });

        // 测试可变集合的复制是否相等
        var strs = Lists.newArrayList("wo", "shi", "zhongguoren");
        var copy1 = List.copyOf(strs);
        System.out.println("测试可变集合的复制是否相等:");
        System.out.println(strs == copy1);
    }

    private static void test2() {
        String str = "    hello java11     ";
        // 判断字符串是否为空白
        System.out.println(" ".isBlank());
        // 去除首尾空格
        System.out.println(str.strip());
        // 去除尾部空格
        System.out.println(str.stripTrailing());
        // 去除首部空格
        System.out.println(str.stripLeading());
        // 复制字符串10次
        System.out.println(str.repeat(10));
        // 行数统计
        System.out.println("行数:"+str.lines().count());
    }

    private static void test1() {
        var name = "test";
        System.out.println(name);
        var num = 1;
        var result = num *100;
        System.out.println(result);
    }


}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值