• 【Java基础】Java10 新特性


    Java10 新特性

    局部变量类型推断

    局部变量的显示类型声明,常常被认为是不必须的。

    • 场景一:类实例化时。在声明一个变量时,总是习惯了敲打两次变量类型,第一次用于声明变量类型,第二次用于构造器。
    • 场景二:返回值类型含复杂泛型结构。
    • 场景三:经常声明一种变量,它只会被使用一次,而且是用在下一行代码中。

    局部变量类型推断适用情况:

    package parzulpan.com.Java10;
    
    import java.util.ArrayList;
    
    /**
     * @Author : parzulpan
     * @Time : 2020-11-30
     * @Desc : Java10 局部变量类型推断
     */
    
    public class LocalTypeInference {
        public static void main(String[] args) {
            //1.局部变量的初始化
            var list = new ArrayList<>();
            list.add("Tom");
    
            //2.增强for循环中的索引
            for(var v : list) {
                System.out.println(v);
            }
    
            //3.传统for循环中
            for(var i = 0; i < 10; i++) {
                System.out.println(i);
            }
        }
    }
    

    局部变量类型推断不适用情况:

    • 初始值为 null;
    • 方法引用;
    • Lambda 表达式;
    • 为数组静态初始化;
    • 情况1:没有初始化的局部变量声明;
    • 情况2:方法的返回类型;
    • 情况3:方法的参数类型;
    • 情况4:构造器的参数类型;
    • 情况5:属性;
    • 情况6:catch 块。

    工作原理:在处理 var 时,编译器先是查看表达式右边部分,并根据右边变量值的类型进行推断,作为左边变量的类型,然后将该类型写入字节码当中

    集合新增创建不可变集合的方法

    自 Java9 开始,Jdk 里面为集合(List / Set / Map)都添加了 of (jdk9新增)和 copyOf (jdk10新增)方法,它们两个都用来创建不可变的集合。

    package parzulpan.com.Java10;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @Author : parzulpan
     * @Time : 2020-11-30
     * @Desc : Java10 集合新增创建不可变集合的方法
     */
    
    public class CopyOfTest {
        public static void main(String[] args) {
            var list1 = List.of("Tom", "Jerry", "Hei");
            var copy1 = List.copyOf(list1);
            System.out.println(list1 == copy1); // true
    
            var list2 = new ArrayList<String>();
            var copy2 = List.copyOf(list2);
            System.out.println(list2 == copy2); // false
        }
    }
    

    总结,对于 copyOf(A) ,如果 A 本身就是一个可读集合,则 copyOf(A) 返回值即为 A;如果 A 本身不是一个可读集合,则 copyOf(A) 返回值即为 新的可读集合。

    总结和练习

  • 相关阅读:
    面向对象编程的三大特征: 封装、继承、多态
    CDH和HDP对比
    mapreduce、spark、tez区别
    minio原理和使用
    HDP、CDH、CDP升级
    常用的分布式文件系统
    linux平台下防火墙iptables原理(转)
    php 1207
    php 1209
    php 1130
  • 原文地址:https://www.cnblogs.com/parzulpan/p/14131759.html
Copyright © 2020-2023  润新知