![80e8acefbfbba24c9d82b2a4525472ca.png](https://i-blog.csdnimg.cn/blog_migrate/3ef57bddc21064dd871d4883066fc0a3.jpeg)
Java 8 在 2014 年发布,时间已经过去 6 + 年,Java 8 的新特性--lambda,你熟悉吗?
Lambda 表达式是一个【匿名函数】。在了解它的语法前,你首先得明白,什么情况下能使用 Lambda,【简单来说就是接口中只能有一个被实现的方法】。如果一个接口中含有n(n >= 2)方法,不可以使用 Lambda 表达式,因为 Lambda 表达式隐去了方法名和参数类型,无法确定使用的是哪一个方法。
先感受哈 Lambda 的魅力
![524e1ec49b633bdc2f429200a2f9bdb5.png](https://i-blog.csdnimg.cn/blog_migrate/ef1cd7390990510f0c6a61cea6905750.jpeg)
输出结果:
![e9ae75a6c04e5e2d094e417c5e9ab6e6.png](https://i-blog.csdnimg.cn/blog_migrate/7ad9325b22ec1b35410210d836085461.jpeg)
下面我们来盘一盘 Lambda 表达式的各种情况。
Lambda 的基本语法
// 写法 ①(parameters) -> expression// 写法 ②(parameters) ->{ statements; }
1-4 是无返回值的情况
1、接口函数无参数,无返回值
![e0206838e4f7b4f34783e6483b703e17.png](https://i-blog.csdnimg.cn/blog_migrate/3ae405099236801058ae1e0438238a71.jpeg)
2、接口函数有 1 个参数,无返回值
类型可选,可以不指定参数类型,编译器可以自动判断。
圆括号可选,如果只有一个参数,可以不需要圆括号,多个参数必须要圆括号。
花括号可选,一个语句可以不用花括号,多个语句则必须有花括号。
![cbe3681bf4a314f6afd3ec99c37d9917.png](https://i-blog.csdnimg.cn/blog_migrate/7b1d1dbb994c0654db69759a917f62fa.jpeg)
3、接口有多个参数,无返回值
![8515dd5764d9c18d9f82ab97578fb467.png](https://i-blog.csdnimg.cn/blog_migrate/bfee64b4638f45c6e77c12751cc44e54.jpeg)
4-6 是有返回值情况
4、接口函数无参数,有返回值
返回值可选,如果只有一个表达式,可以自动返回,不需要 return 语句;花括号中需要 return 语法。
![d134c93714e7f81ffba623939d1c16f1.png](https://i-blog.csdnimg.cn/blog_migrate/c92f55b3fec2b64aaf3efbdf7c3f581a.jpeg)
5、接口函数有 1 个参数,有返回值
![43b806373e224c3358a75a8260511578.png](https://i-blog.csdnimg.cn/blog_migrate/c7ae00f01a2cfedcfc989f3237b17d7b.jpeg)
6、接口函数有多个参数,有返回值
![1cd138f2313dc84124cbe03455e2b8fd.png](https://i-blog.csdnimg.cn/blog_migrate/13834a08118f54b1264051042755e7a5.jpeg)
Lambda 表达式引用方法
上面的 6 个例子,只是入门级,如果还没理解,建议收藏多看几次。下面盘一盘在 Lambda 表达式 -> 引入方法。
1、Lambda 表达式引用方法 -- 静态方法
![7ed1f20efc7e709fb70cdbc682509bc6.png](https://i-blog.csdnimg.cn/blog_migrate/fc0f001d28d357ceec177bee8a7a5ef5.jpeg)
2、Lambda 表达式引用方法 -- 对象方法
![3f6fb418e348ead2eeb4cbcdbdc44e1f.png](https://i-blog.csdnimg.cn/blog_migrate/19f3c453aed2b0746f2689f0f599be91.jpeg)
3、Lambda 表达式引用构造函数 -- 无参构造函数
打印“无参构造函数”
![738f99a17610b220df9c3b4c474ef89b.png](https://i-blog.csdnimg.cn/blog_migrate/a4a413f2a07d22021f7c621a233b771e.jpeg)
4、Lambda 表达式引用构造函数 -- 有 1 个参数的构造函数方法
打印“有 1 个参数的构造函数”
![d064f831e2e3bf4b02f58f9c9a33c2c0.png](https://i-blog.csdnimg.cn/blog_migrate/a5229ecd23826747177efffd78c3d094.jpeg)
5、Lambda 表达式引用构造函数 -- 有 2 个参数的构造函数方法
打印“有 2 个参数的构造函数”
![5acdcef154e361055c8a7737954708cf.png](https://i-blog.csdnimg.cn/blog_migrate/cde179913a6be7bed60725f883eddafc.jpeg)
欢迎关注 @Python大星 ,一个会点 Python 的 Java 程序员。如果你有更好的想法,欢迎留言,一起探讨,想说你就说啊!后续更新 Java8 更多新的特性。
@Python大星 | 文