java11和java8相比多了一些新的特性
1.本地类型推断
对于什么是本地类型推断呢?我举个例子
var a="abc";
可以直接通过右边的表达式来推断a是字符串类型,等价于String a="abc;
2.增加了字符串的一些处理
2.1新增了isBlank() 判断字符串是否为字符串;
"".isBlank(); " ".isBlank(); //都返回true
2.2.strip(); 去掉首位空格
" lcy ".strip();//返回lcy
" lcy ".strip(); //返回lcy
2.3 stripTrailing(); //去掉尾部空格
2.4stripLeading();去掉首部空格
2.5repeat(number);//重复次数
''lcy".repeat(3);// lcylcylcy
3.集合加强
List,Map,Set 新增了of和copyOf方法,都用来创建不可变的集合
List<String>list1= List.of("a","b","c");
List<String>list2=List.copyOf(list1);
System.out.println(list1==list2); true
//如果对于可变的集合copy
List<String>list3=new ArrayList<>();
List<String>list4=List.copyOf(list3);
System.out.println(list3==list4); //false
对于上面的结果,不可变的集合copyOf,是一个地址,对于可变的集合,copyOf新建了一个集合,我们通过copyOf的源码来看:
static <E> List<E> of(E e1, E e2, E e3) {
return new ImmutableCollections.ListN<>(e1, e2, e3);
}
//copyOf方法
static <E> List<E> listCopy(Collection<? extends E> coll) {
if (coll instanceof AbstractImmutableList && coll.getClass() != SubList.class) {
return (List<E>)coll;
} else {
return (List<E>)List.of(coll.toArray());
}
}
看出可以copyOf
方法会先判断来源集合的英文不是AbstractImmutableList
类型的,如果是,就直接返回,如果不是则调用of来创建一个不可变集合的实例;
特别注意的是:copyOf()创建的集合是不可变的集合,不可进行新增、删除、修改等操作,会报UnsupportedOperationException这个错误