java8新特性

一、lambda表达式

  1. lambda表达式是一个函数的简洁书写方式
  2. lambda表达式可以作为参数传递给方法或存储在变量中
  3. lambda表达式使代码更简洁明了

二、函数式接口

  1. 函数式接口,就是有且仅有一个抽象方法的接口
  2. 函数式接口,可加上注解 @FunctionalInterface
  3. 函数式接口,是为了更好的使用lambda表达式而产生的概念

三、方法引用

  1. 方法引用是lambda表达式的一种更简洁的写法
  2. 当lambda表达式中,只涉及单一方法的调用时,就可以使用方法引用
  3. 方法引用使代码进一步简洁明了

四、默认方法与默认静态方法

  1. 默认方法,就是在接口中有方法体,并由default修饰的方法
  2. 默认静态方法,就是在接口中有方法体,并由static修饰的方法
  3. 接口中可以有多个默认方法和默认静态方法
  4. 为什么?为了解决接口的修改与现有的实现不兼容的问题

注意:默认静态方法,只能接口名.方法名使用!

五、Stream API

  1. Stream(流)是从支持数据处理操作的源生成的元素序列
  2. Stream API允许以声明性方式处理数据集合
  3. Stream API配合lambda表达式使用,使数据处理高效率、干净、简洁
  4. Stream 不是数据结构,它是数据的处理的平台
筛选和切片
  1. filter:过虑
  2. distinct:去重
  3. limit:截断
  4. skip:跳过(limit(n)与skip(n)是互补的)
映射
  1. map
查找和匹配
  1. allMatch:所有匹配则返回true
  2. anyMatch:任意一个匹配则返true
  3. noneMacth:没有一个匹配则返回true
  4. findFirst:查找第一个
  5. findAny:查找任一个
归约
  1. 元素求和:int sum = numbers.stream().reduce(0, (a, b) -> a + b);
  2. 最大值:Optional max = numbers.stream().reduce(Integer::max);
  3. 最小值:Optional max = numbers.stream().reduce(Integer::min);
收集
  1. 分组:Map<Dish.Type, List> dishesByType = menu.stream().collect(groupingBy(Dish::getType));
  2. 分区:特殊的分组,true一组,false一组

六、Optional 类

  1. Optional 是一个容器类,存放一个T类型的对象或null
  2. OPtional 容器内存值,则isPresent()方法返回true,调用get()则返回该值
  3. Optional 类的引入很好的解决空指针异常,避免源码被各种null检查污染,以便开发者写出更加整洁的代码
Optional<String> fullName = Optional.ofNullable(null);
System.out.println("Full Name is set? " + fullName.isPresent());
System.out.println("Full Name: " + fullName.orElseGet(() -> "[none]"));
System.out.println(fullName.map(s -> "Hey " + s + "!").orElse("Hey Stranger!"));

Full Name is set? false
Full Name: [none]
Hey Stranger!

七、新的日期时间 API

  1. 它提供了javax.time.ZoneId用来处理时区
  2. 它提供了LocalDate、LocalTime、Clock、Instant、DateTimeFormatter等类
  3. Java 8中新的时间与日期API中的所有类都是不可变且线程安全的,这与之前的Date与Calendar API中的恰好相反,那里面像java.util.Date以及SimpleDateFormat这些关键的类都不是线程安全的
  4. 新的API对日期时间的使用和各种计算更简洁明了

八、Base64

  1. 在Java 8中,Base64编码已经成为Java类库的标准。
  2. Java 8 内置了 Base64 编码的编码器和解码器。
  3. Base64工具类提供了一套静态方法获取三种BASE64编解码器:基本、URL、MIME

九、Nashorn, JavaScript 引擎

  1. Nashorn 一个 javascript 引擎。
  2. 从JDK 1.8开始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成为Java的嵌入式JavaScript引擎。Nashorn完全支持ECMAScript 5.1规范以及一些扩展。它使用基于JSR 292的新语言特性,其中包含在JDK 7中引入的 invokedynamic,将JavaScript编译成Java字节码。
  3. 与先前的Rhino实现相比,这带来了2到10倍的性能提升
  4. java与js代码可以在其中互相调用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值