Java10,11新特性

本文概述了Java 10中局部变量类型推断的升级,并介绍了如何在新版本中利用`var`关键字简化代码。同时,讨论了Java 11新增的字符串处理方法和Optional类的新功能。此外,我们还探讨了不可变集合的创建及其应用场景。
摘要由CSDN通过智能技术生成

Java10新特性

局部变量类型推断

在这里插入图片描述

适用于

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RyltqxGK-1629287623233)(C:\Users\acer\AppData\Roaming\Typora\typora-user-images\image-20210817210537821.png)]

不适用于

在这里插入图片描述

在这里插入图片描述

    @Test
    public void test3() {
//        情况1:没有初始化的局部变量声明
//        var s = null;


//        情况6:catch块
//        try{
//
//        }catch(var e){
//            e.printStackTrace();
//        }
    }
    //情况2:方法的返回类型
//    public var method1(){
//
        return 0;
//    }
    // 情况3:方法的参数类型
//    public void method2(var num){
//
//    }

    //情况4:构造器的参数类型
//    public Java10Test(var i){
//
//    }

    //情况5:属性
//    var num;

新创建不可变集合的方法

在这里插入图片描述

​ 从源码分析,可以看出copyOf方法会先判断来源集合是不是AbstractImmutableList 类型的,如果,就直接返回,如果不是,则调用of创建一个新的集合
​ 示例2因为用的new 创建的集合,不属于不可变 AbstractImmutableList 类的子类,所以 copyOf 方法又创建了一个新的实例,所以为false。
​ 注意:使用of和copyOf创建的集合为不可变集合,不能进行添加、删除、替换、排序等操作,不然会报 java.lang.UnsupportedOperationException 异常。
​ 上面演示了 List 的 of 和 copyOf 方法,Set 和 Map 接口都有

Java11新特性

新增字符串方法

    @Test
    public void test1(){
//        isBlank():判断字符串是否为空白
        System.out.println("  \t  \t  \n  ".isBlank());
//        strip():去除首尾空白
        System.out.println("-----" + "  \t abc \t  \n  ".strip() + "-------");
        System.out.println("-----" + "  \t abc \t  \n  ".trim() + "-------");
//        stripTrailing():去除尾部空格
        System.out.println("-----" + "  \t abc \t  \n  ".stripTrailing() + "-------");
//        stripLeading():去除首部空格
        System.out.println("-----" + "  \t abc \t  \n  ".stripLeading() + "-------");
//        repeat(int count):复制字符串
        String str1 = "abc";
        String str2 = str1.repeat(5);
        System.out.println(str2);

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

Optional类新增方法

    @Test
    public void test2(){

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

        op = Optional.of("abc");
        //orElseThrow():value非空,返回value;否则抛异常NoSuchElementException
        var obj = op.orElseThrow();
        System.out.println(obj);

        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新特性三:局部变量类型推断的升级
    @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());
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值