1895-安排面试城市

oracle查询最近执行语句使用脚本整理

  返回  

Java10,11新特性

2021/8/20 10:48:47 浏览:

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());
    }

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号