java11的一些新的特性

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这个错误

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值