Java 8新特性简介
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Java 8 是oracle公司于2014年3月发布,可以看成是自Java 5 以来最具革命性的版本。Java 8为Java语言、编译器、类库、开发 工具与JVM带来了大量新特性。
- 速度更快
- 代码更少(增加了新的语法:Lambda 表达式)
- 强大的 Stream API
- 便于并行
- 最大化减少空指针异常:Optional
- Nashorn引擎,允许在JVM上运行JS应用
并行流与串行流
并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数 据块的流。相比较串行的流,并行的流可以很大程度上提高程序的执行效率。 Java 8 中将并行进行了优化,我们可以很容易的对数据进行并行操作。 Stream API 可以声明性地通过 parallel()
与 sequential()
在并行流与顺序流 之间进行切换。
一、Lambda表达式
1.为什么使用 Lambda 表达式
Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。
从匿名类到 Lambda 的转换举例
// 匿名内部类
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("hello world");
}
};
// lambda表达式
Runnable runnable1 = () -> System.out.println("hello world");
// 匿名内部类作为参数传递
TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
});
// lambda表达式
TreeSet<String> treeSet1 = new TreeSet<>((o1, o2) -> o1.length() - o2.length());
Lambda 表达式:在Java 8 语言中引入的一种新的语法元素和操 作符。这个操作符为 “->” , 该操作符被称为 Lambda 操作符
或箭头操作符
。它将 Lambda 分为两个部分:
左侧:指定了 Lambda 表达式需要的参数列表
右侧:指定了 Lambda 体,是抽象方法的实现逻辑,也即 Lambda 表达式要执行的功能。
2.语法
语法格式一:无参,无返回值
Runnable r1 = () -> {
System.out.println('hello')}
语法格式二:Lambda 需要一个参数,但是没有返回值。
Consumer<String> con = (String str) -> {