Java 8 是 Java 历史上最重要的版本之一,也是目前企业开发中使用最广泛的版本。几乎所有 Java 后端面试都会问:

Java 8 有哪些新特性?

如果你只会回答 LambdaStream,很可能拿不到高分。本文将带你快速掌握 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 内置很多函数式接口,例如:

  • Function
  • Consumer
  • Supplier
  • Predicate

一句话总结:

函数式接口就是只有一个抽象方法的接口,是 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 的精髓。

更多推荐