publicclassJava9Test2{//java9新特性:Stream API加强@Testpublicvoidtest1(){
List<Integer> list = Arrays.asList(12,34,63,19,2,1,85,23);//返回从开头开始的按照指定规则尽可能多的元素//list.stream().takeWhile(x -> x < 60).forEach(System.out::println);//与takeWhile()相反,返回剩余的元素
list.stream().dropWhile(x -> x <60).forEach(System.out::println);}@Testpublicvoidtest2(){//of()不能单一为null
Stream<Integer> stream = Stream.of(null, null);
stream.forEach(System.out::println);//ofNullble()形参变量可以为null值的单个元素
Stream<Object> stream1 = Stream.ofNullable(null);
System.out.println(stream1.count());}@Testpublicvoidtest3(){
Stream.iterate(0, x -> x +1).limit(10).forEach(System.out::println);//java9重载方法
Stream.iterate(0, x -> x <100, x -> x +1).forEach(System.out::println);}}
1.8 Javascript引擎升级:Nashorn
Nashorn在JDK9中得到改进,他为Java提供轻量级的JavaScript运行时。
JDK9包含一个用来解析Nashorn的ECMAScript语法树的API
2. Java 10新特性
JDK10新增12个JEP(JDK Enhancement Proposal特性加强建立)
最主要的是局部变量类型推断,var不是一个关键字
publicclassJava10Test{//局部变量的类型推断@Testpublicvoidtest1(){//声明变量时,根据所附的值,推断变量的类型
var num =10;
var list =newArrayList<String>();
list.add("123");for(var s : list){
System.out.println(s);
System.out.println(s.getClass());}}@Testpublicvoidtest2(){//var num ;//System.out.println(num.getClass());
Supplier<Double> sup =()-> Math.random();//var sup1 = () -> Math.random();
Consumer<String> con = System.out::println;//var con1 = System.out::println;int[] arr ={1,2,3,4};//var arr = {1, 2, 3, 4};}// public var m1() {// return 0;// }// public void m2(var num){//// }//java10新特性:copyOf()方法,用于创建一个只读的集合@Testpublicvoidtest3(){
var list1 = List.of("java","python");
var copy1 = List.copyOf(list1);
System.out.println(list1 == copy1);//true
var list2 =newArrayList<String>();
var copy2 = List.copyOf(list2);
System.out.println(list2 == copy2);//false//copyOf(col)如果参数col是一个只读集合,则返回值即为col;如果不是只读集合,则返回一个新只读集合}}
3. Java 11新特性
JDK11增加了17个主要JEP,引入了两种新的GC,其中包括跨时代意义的ZGC
全新的HttpClient API,替换原有的HttpURLConnection
更简洁的编译运行程序 java XXXX.java
废弃Nashorn引擎,可以考虑使用GraalVM
publicclassJava11Test{//java11新特性:String中新增的方法@Testpublicvoidtest1(){
System.out.println("\t \n".isBlank());
System.out.println("---"+" \t abc \t \n"+"----".strip()+"-----");
System.out.println("abc".repeat(5));
System.out.println("ef\n g".lines().count());}//java11新特性:Optional新增方法@Testpublicvoidtest2(){
Optional<Object> op = Optional.empty();
System.out.println(op.isPresent());//判断内部的value是否存在
System.out.println(op.isEmpty());//判断内部的value是否为空
op = Optional.of("abc");
var obj = op.orElseThrow();
System.out.println(obj);
Optional<String> op1 = Optional.of("hello");
Optional<Object> op2 = op.or(()-> op1);
System.out.println(op2);}//java11新特性:局部变量类型推断升级@Testpublicvoidtest3(){
Consumer<String> con =(@Deprecated var t)-> System.out.println(t.toUpperCase());}}