第25题:JDK1.8的新特性有哪些
📚 回答:
JDK1.8是一个重要的版本更新,引入了许多实用的新特性,以下是其中的核心内容:
1. 接口支持默认方法和静态方法
-
背景 :
在JDK1.8之前,接口只能包含抽象方法。如果需要在接口中添加方法,则所有实现类都需要同步修改,这会导致兼容性问题。
-
新特性:
- 使用
default关键字为接口方法提供默认实现。 - 使用
static关键字为接口添加静态方法。
💡 代码示例 :
以下代码展示了接口默认方法的使用:
- 使用
java
interface MyInterface {
default void defaultMethod() {
System.out.println("This is a default method");
}
static void staticMethod() {
System.out.println("This is a static method");
}
}
class MyClass implements MyInterface {}
public class Main {
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.defaultMethod(); // 调用默认方法
MyInterface.staticMethod(); // 调用静态方法
}
}
2. Lambda表达式
-
定义 :
Lambda表达式是一种简洁的方式,用于表示匿名函数,允许把函数作为参数传递给其他方法。
-
语法 :
(参数列表) -> { 方法体 } -
应用场景 :
常用于简化集合操作(如
forEach)、线程创建等场景。💡 代码示例 :
以下代码展示了Lambda表达式的使用:
java
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// 使用Lambda表达式遍历集合
names.forEach(name -> System.out.println(name));
}
}
3. 新的日期时间API
-
背景 :
JDK1.8之前的日期时间API(如
Date和Calendar)存在线程安全问题,且使用不便。 -
新特性 :
引入了
java.time包,提供了更强大、更易用的日期时间类,如LocalDate、LocalTime和LocalDateTime。💡 代码示例 :
以下代码展示了新的日期时间API的使用:
java
import java.time.LocalDate;
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.now(); // 获取当前日期
LocalDateTime now = LocalDateTime.now(); // 获取当前日期和时间
System.out.println("Today: " + today);
System.out.println("Now: " + now);
}
}
4. Stream API
-
定义 :
Stream是JDK1.8新增的一个流式处理框架,用于对集合进行高效的操作(如过滤、映射、排序等)。 -
特点:
- 支持链式调用,代码简洁优雅。
- 提供并行流(
parallelStream),提升性能。
💡 代码示例 :
以下代码展示了Stream API的使用:
java
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// 使用Stream API过滤偶数并求和
int sum = numbers.stream()
.filter(n -> n % 2 == 0)
.mapToInt(Integer::intValue)
.sum();
System.out.println("Sum of even numbers: " + sum); // 输出 6
}
}
📌 专栏 :大白话说Java面试题 --- 01-Java基础篇