01-Java8新特性 Lambda 表达式
新特性简介
- 速度更快
- 代码更少(增加了新的语法Lambda表达式)
- 强大的StreamApi
- 便于并行
- 最大化减少空指针异常Optional
其中最为核心的就是Lambda表达式和StreamApi
Lambda表达式简介
Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样传递),可以写出更简洁,更灵活的代码,作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升.
Lambda表达式的基础语法
在Java8中引入了一个新的操作符 "->" 该操作符称为箭头操作符或Lambda操作符
箭头操作符将Lambda表达式拆分为两部分:
- 左侧:Lambda 表达式的参数列表
- 右侧:Lambda 表达式中所需执行的功能,即 Lambda体
无参数,无返回值
@Test public void test1() { Runnable runnable = new Runnable() { @Override public void run() { System.out.println("无参数,无返回值"); } }; runnable.run(); System.out.println("----------------------"); Runnable runnable1 = () -> System.out.println("无参数,无返回值"); runnable1.run(); }
有一个参数,无返回值
@Test public void test2() { Consumer consumer = new Consumer() { @Override public void accept(String s) { System.out.println(s); } }; consumer.accept("有一个参数,无返回值"); System.out.println("-----------------------"); Consumer consumer1 = (s) -> System.out.println(s); // 单参数可以不加小括号 Consumer consumer2 = s -> System.out.println(s); // 单行代码,方法引用,第三章写,可以当做先看不见 Consumer consumer3 = System.out::println; consumer1.accept("有一个参数,无返回值"); consumer2.accept("有一个参数,无返回值"); consumer3.accept("有一个参数,无返回值"); }
晚上白光不好看,IDEA调成黑色
有两个及其以上参数,有返回值,多行代码
@Test public void test3() { // 左侧两个及其两个以上参数必须写小括号,右侧执行体,一行代码可以不写return和大括号,多行代码必须写大括号 Comparator comparator = (x, y) -> { System.out.println("函数式接口"); return Integer.compare(x,y); }; }
为什么参数可以不写数据类型?
其实是可以写数据类型的,但是所有参数都要写,和不写效果是一样的,所以还不如不写,我们不靠字数赚钱
为什么可以不写呢?应为JVM编译器可以通过上下文推断出,数据类型,即"类型推断"
Lambda表达式需要函数式接口的支持
总结
上联:左右遇一括号省
下联:左侧推断类型省
横批:能省则省
作者:彼岸舞
时间:2021\12\13
内容关于:Java
本文属于作者原创,未经允许,禁止转发