目录
说出5 个 JDK 1.8 引入的新特性?
- Lambda表达式:
- JDK 1.8 引入了Lambda表达式,使得开发者能够以更简洁的方式编写匿名函数或函数式接口的实现。
- Stream API:
- 新增的Stream API提供了一种高效且表达性强的方式来处理数据集合,支持串行和并行操作。
- 新的日期和时间API:
- 引入了新的日期和时间API,位于
java.time
包下,包括LocalDate
、LocalTime
、LocalDateTime
等类,用于替代旧的Date
和Calendar
类。
- 引入了新的日期和时间API,位于
- 接口默认方法:
- 允许在接口中直接定义默认方法的实现,这为函数式编程和扩展现有库提供了便利。
- 新的并发工具:
- 引入了新的并发工具,如
CompletableFuture
,提供了更丰富的异步编程能力。
- 引入了新的并发工具,如
- 类型注解:支持在局部变量和泛型类型上使用注解。
- 新的API:例如
java.util.Optional
类,用于避免NullPointerException
。 - 性能改进:对垃圾收集器和JVM性能的改进。
- Nashorn JavaScript引擎:允许在JVM上运行JavaScript代码。
什么是Lambda表达式?它在Java中如何使用?
(1)Lambda表达式含义(也称为λ表达式)
- 是Java 8中引入的一种新特性,它允许你以匿名函数的形式传递代码块。
- Lambda表达式主要用于实现函数式接口,使得代码更加简洁、清晰。
- Lambda表达式本质上是一个匿名函数,你可以在不定义传统方法的情况下实现接口。
- Lambda表达式通常用于简短的操作,特别是当需要传递一个函数作为参数时。
(2)Lambda表达式语法
(parameters) -> expression
或者
(parameters) -> { statements; }
- parameters:参数列表,可以省略参数类型,如果只有一个参数,甚至可以省略括号。
- ->:分隔符,将参数列表与Lambda体分开。
- expression:表达式,如果Lambda体是一个表达式,它会返回该表达式的值。
- statements:语句块,如果Lambda体包含多个语句,需要用花括号括起来
(3)Lambda表达式的使用
Lambda表达式(也称为λ表达式)是Java 8中引入的一种新特性,它允许你以匿名函数的形式传递代码块。Lambda表达式主要用于实现函数式接口,使得代码更加简洁、清晰。
什么是Lambda表达式?
Lambda表达式本质上是一个匿名函数,你可以在不定义传统方法的情况下实现接口。Lambda表达式通常用于简短的操作,特别是当需要传递一个函数作为参数时。
Lambda表达式的语法:
(parameters) -> expression
或者
(parameters) -> { statements; }
- parameters:参数列表,可以省略参数类型,如果只有一个参数,甚至可以省略括号。
- ->:分隔符,将参数列表与Lambda体分开。
- expression:表达式,如果Lambda体是一个表达式,它会返回该表达式的值。
- statements:语句块,如果Lambda体包含多个语句,需要用花括号括起来。
Lambda表达式在Java中的使用:
- 作为方法参数:
public class LambdaExample {
public static void main(String[] args) {
List<String> strings = Arrays.asList("a", "b", "c");
strings.forEach(s -> System.out.println(s));
}
}
在这个例子中,forEach
方法接受一个 Consumer
函数式接口的实现,我们使用Lambda表达式来实现它。
- 作为返回值:
public class LambdaExample {
public static void main(String[] args) {
List<String> strings = Arrays.asList("a", "b", "c");
Supplier<List<String>> stringListSupplier = () -> new ArrayList<>(strings);
List<String> newList = stringListSupplier.get();
newList.forEach(System.out::println);
}
}
在这个例子中,Supplier
函数式接口的 get
方法返回一个新的列表,我们使用Lambda表达式来创建一个新的 ArrayList
。
- 与函数式接口一起使用:
public class LambdaExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
.filter(n -> n % 2 == 0)
.mapToInt(Integer::intValue)
.sum();
System.out.println("Sum of even numbers: " + sum);
}
}
在这个例子中,我们使用Lambda表达式与 filter
和 mapToInt
方法一起使用,以计算列表中偶数的总和。
函数式接口:
函数式接口是只包含一个抽象方法的接口。Java 8在 java.util.function
包中提供了许多内置的函数式接口,如 Function
、Consumer
、Supplier
、Predicate
等。
Lambda表达式的引入使得Java代码更加简洁,并且支持更灵活的编程模式,如函数式编程。
标签:Java,函数,JDK,接口,参数,特性,表达式,Lambda From: https://www.cnblogs.com/yangcurry/p/18452495