JDK新特性总结--1(8/9/10)

JDK8新特性(2014.3)

1.速度更快

2.代码更少:Lambda表达式

        

       Lambda表达式本质:java中接口的一个实例(接口实现类的一个具体的对象!)

      语法:  ->箭头操作符

                ->左侧:形参列表(参数名称) 

                ->右侧:重写方法的方法体{ },如果有返回值 方法体中写return

     注意:使用lambda表达式要求接口必须是函数式接口,即只有一个抽象方法(不包括重写的Object方法)的接口,注解@FunctionalInterface。

     系统中的函数式接口:Comparator  Runable

     系统中内置函数式接口:java.util.function:1.Consumer 消费型接口   void accept(T t)

                                                                        2.Funvction 函数式接口  R apply(T t)

                                                                        3.Predicate 断定型接口  boolean test(T t)

                                                                        4.Supplier 供给型接口  T get()

3.Stream API

   

 

 排序

 终止操作:查找和匹配

 

 归约

 收集

 

4.便于并行

5.最大化减少空指针运行:Optional

6.Nashorn引擎,允许在JVM上运行JS应用

7.接口的变化:加入了默认方法和静态方法

(1)默认方法

 

(2)疑问:实现类有父类,父类中有同名方法。调用时,走父类的方法还是接口中的默认方法?

         答案:走父类的方法,“类优先原则”,一旦父类中的方法和接口中的默认方法冲突的时候,接口中的 默认方法就会忽略!

(3)疑问:一个类实现了两个接口,两个接口都有同名的默认方法,实现类走哪个?

        答案:当实现类的接口中有冲突的默认方法,那么实现类必须重写该方法,并且走重写后的逻辑!

(4)静态方法

 

JDK9新特性(2017.9)

1.目录对比

 2.模块化系统

(1)模块与模块之间有相互协议,只有暴露了才可以访问,否则不可以!

(2)需要什么就加载什么!

3.REPL:以交互式的方式,对语句和表达式求值(命令Jshell)

常用命令

 

4.接口的改变:新增私有方法

 5.钻石操作符的升级(泛型<>)

 6.try语法的升级

 Java7:

 java8:不用显示的进行资源的关闭,只要将资源实例化的对象放入try后面的()中,就会自动关闭

 java9:可在try后面的()中放入已经实例化的对象

   注意:isr默认是被final修饰的,所以在try中是不可以改变的!

             多个变量关闭,要用;分割!

 7.标识符的改变

   标识符的组成:字母、数字、下划线(_)、美元符号($)

   java8之前:name_   是正确的写法;

   java9之后:name_   是错误的写法;

 8.API

 

 

 

 

JDK10新特性

局部变量类型推断

但是没人这样写!

局部变量类型推断发生在编译阶段还是运行阶段?

以上证明局部变量类型推断发生在编译阶段,和运行时无关,对运行时没有产生任何影响!

 以下情况不可以用var占位

1.局部变量只声明,没有赋值;

2.Lambda表达式中;

3.方法引用

4.数组的静态初始化

5.方法的返回值类型

 6.方法的形式参数(构造器参数也不可以)

 7.属性

 

 8.try-catch

posted on 2021-07-06 22:15  桃之夭夭*  阅读(81)  评论(0)    收藏  举报

导航