Java 8 的新特性¶
一、Lambda 表达式¶
函数式编程,简化匿名内部类。
二、Stream API¶
集合处理:filter、map、reduce、collect。
三、Optional¶
避免 NPE。
四、新日期 API¶
java.time 包:
LocalDate.now();
LocalTime.now();
LocalDateTime.of(2024, 1, 1);
Duration.between(t1, t2);
Period.between(d1, d2);
替代老旧的 Date、Calendar。
五、接口默认方法¶
接口可以有默认实现,不破坏实现类。
六、方法引用¶
:: 语法。
七、函数式接口¶
@FunctionalInterface:
Function<T,R>Consumer<T>Supplier<T>Predicate<T>
八、其他¶
1. 新工具类¶
OptionalBase64
2. HashMap 红黑树¶
链表长度 ≥ 8 树化。
3. ConcurrentHashMap¶
弃用 Segment,改为 CAS + synchronized。
4. 重复注解、类型注解¶
5. Nashorn JavaScript 引擎(已废弃)¶
九、JVM 变化¶
- JVM 永久代被 Metaspace 取代。
十、总结¶
Java 8 是革命性版本:Lambda + Stream + Optional + 新日期 API 改变了 Java 的编程风格。
对比
- Java 9:模块化、JShell。
- Java 11:var、HTTP Client。
- Java 17:switch 表达式、record、sealed。
- Java 21:虚拟线程。