还在只会说 Lambda?Java 8 六大核心新特性,一篇文章彻底讲懂!(面试高频)
Java 8 是 Java 历史上最重要的版本之一,也是目前企业开发中使用最广泛的版本。几乎所有 Java 后端面试都会问:
Java 8 有哪些新特性?
如果你只会回答 Lambda 和 Stream,很可能拿不到高分。本文将带你快速掌握 Java 8 的六大核心新特性,并告诉你它们分别解决了什么问题。
1. Lambda 表达式——让代码更简洁
Java 8 引入了 Lambda 表达式,用于简化匿名内部类的写法,让 Java 开始支持函数式编程。
例如,Java 8 之前:
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("Hello");
}
};
Java 8 之后:
Runnable r = () -> System.out.println("Hello");
是不是简洁了很多?
一句话总结:
Lambda 表达式就是简化匿名内部类的写法,让代码更加简洁。
2. Stream API——让集合操作像流水线一样
以前处理集合,需要大量 for 循环:
for (Integer i : list) {
if (i > 3) {
System.out.println(i);
}
}
Java 8 可以这样写:
list.stream()
.filter(i -> i > 3)
.forEach(System.out::println);
整个处理过程就像一条流水线:
集合
↓
filter()
↓
map()
↓
sorted()
↓
collect()
常见 API:
filter():过滤map():转换sorted():排序distinct():去重collect():收集结果forEach():遍历
一句话总结:
Stream API 提供了链式、函数式的集合处理方式,让代码更优雅。
3. Optional——减少空指针异常
Java 中最常见的异常之一就是:
NullPointerException
例如:
String name = null;
System.out.println(name.length());
直接报空指针。
Java 8 提供了 Optional:
Optional<String> name = Optional.ofNullable(null);
name.ifPresent(System.out::println);
它相当于给对象套了一个“包装盒”,告诉程序:
里面可能有值,也可能没有值。
从而减少空指针异常。
一句话总结:
Optional 用来优雅地处理可能为空的对象,降低空指针异常发生的概率。
4. 函数式接口——Lambda 的搭档
Lambda 并不是可以随便使用,它必须配合函数式接口。
函数式接口:
只有一个抽象方法的接口。
例如:
@FunctionalInterface
interface Calculator {
int add(int a, int b);
}
然后可以使用 Lambda:
Calculator c = (a, b) -> a + b;
Java 内置很多函数式接口,例如:
FunctionConsumerSupplierPredicate
一句话总结:
函数式接口就是只有一个抽象方法的接口,是 Lambda 表达式的基础。
5. 接口默认方法——接口也能写实现
Java 8 之前:
接口只能定义方法,不能实现方法。
interface Animal{
void eat();
}
Java 8:
interface Animal{
void eat();
default void sleep(){
System.out.println("sleep");
}
}
为什么增加这个功能?
因为接口升级时,不需要所有实现类都修改代码,大大提高了兼容性。
一句话总结:
接口可以拥有默认实现,新增功能时不会影响已有实现类。
6. 新日期时间 API——替代 Date 和 Calendar
以前:
Date
Calendar
使用复杂,而且线程不安全。
Java 8 引入:
LocalDate
LocalTime
LocalDateTime
例如:
LocalDate.now();
LocalDateTime.now();
代码更加简单,也更加安全。
一句话总结:
新的日期时间 API 更简单、更安全,替代了旧版 Date 和 Calendar。
Java 8 面试重点
如果面试官问:
Java 8 最大的新特性是什么?
建议回答:
Java 8 最大的变化是引入了 Lambda 表达式和 Stream API,让 Java 支持函数式编程,同时增加了 Optional、函数式接口、接口默认方法和新的日期时间 API,使代码更加简洁、高效、易维护。
总结
| 新特性 | 作用 |
|---|---|
| Lambda 表达式 | 简化匿名内部类,支持函数式编程 |
| Stream API | 链式处理集合数据 |
| Optional | 减少空指针异常 |
| 函数式接口 | Lambda 的基础 |
| 接口默认方法 | 接口可以提供默认实现 |
| 新日期时间 API | 替代 Date、Calendar,更安全易用 |
结语
Java 8 的出现,不只是增加了几个 API,而是改变了 Java 的编程风格。其中最值得深入掌握的是 Lambda 表达式 和 Stream API,因为它们几乎出现在所有现代 Java 项目和面试中。
记住一句话:
Java 8 = Lambda + Stream + Optional + 函数式编程。
只要掌握这几个核心特性,你就已经掌握了 Java 8 的精髓。
更多推荐
所有评论(0)