0%

Java新特性

Java新特性面试

Java8

  • 接口:interface 中可以有默认方法,无需被子类实现,通过Interface实现调用
  • “函数式接口”是指仅仅只包含一个抽象方法,但是可以有多个非抽象方法(也就是上面提到的默认方法)的接口。
    1. default实现,可以被子类继承重写,使用this调用
    2. static实现使用方法和静态方法一样,但是不能被子类继承
    3. interface和abstract class的区别:interface是为了快速扩展功能,而abstract class是为了被继承实现的。
      public class Main implements InterfaceNew{
      
          public static void main(String[] args) {
              InterfaceNew.sm();
              //调用df方法
              Main main = new Main();
              main.df();
          }
      }
      /**
       * InnerMain
       */
      interface InterfaceNew {
          static void sm() {
              System.out.println("interface中的sm实现");
          }
          
          default void  df() {
              System.out.println("interface提供的df实现");
          }
      }
  • Lambda
  • Stream:不存储数据,只是对数据进行一系列的处理
    • 串行流:
      • .stream() 为集合创建串行流
    • 并行流:可以多线程执行
      • parallelStream()获得并行流
    • API:
      • forEach() 迭代每个数据
      • map()传入函数作为变量,对每个数据进行映射(处理)
      • limit() 获取指定数量的流
      • sorted() 对流进行排序
      • Collectors 提供很多归约操作,可以讲将流转化为集合或者聚合元素,要配合collect()来实现
      • count()返回流的的数据
      • distinct() 返回一个去除重复元素的流
      • anyMathch() 检查是否有满足条件的元素,返回值为boolean
      • allMatch() 检查是否所有元素都满足匹配的条件
      • noneMathc()都不符合匹配条件
      • findFirst() 返回流中的第一个元素
      • findAny()返回流中的任意元素,这个任意元素只有在多线程中可以看出不同,他会任何线程中选择一个元素返回
      • reduce() 将流中元素合并成一个元素 numbers.stream().reduce((n1, n2) -> n1 + n2);
      • filter()过滤
  • Optional:用于避免空指针
    • Optional .ofNullable()返回一个包含指定值Optional对象,如果值为null,则返回一个空的Optional对象
    • isPresent() Optional不为空,返回true
    • get()返回值
    • ifPresent() 如果不为空,可以以调用指定的方法
    • orElse(默认值) 如果为空返回这个默认值
    • orElseGet() 如果为空调用指定的函数
    • filter() 过滤,如果不满足,返回一个空的Optional
    • map() 如果对象是Optional,那么就执行给定的函数
    • flatMap()将Optional展开,不再包装成嵌套的Optional

Java9

  • JShell 类似于python实时命令行交互工具
  • G1成为默认的垃圾回收器
  • String使用byte[ ]作为底层,节省空间

Java10

  • var关键字局部变量 ,主要作用是,当类型特别长时,可以使用var替代
  • Optional增加了orElseThrow来在没有值时抛出指定的异常

Java17

-