@[TOC]
0 写在前面
最基本的 Lambda 表达式,它由三部分组成具体格式是这样子的:参数 -> 具体实现;
Lambda表达式格式:()->{}
是一段带有输入参数的可执行语句块。
Lambda 表达式有这么几个特点:
可选类型声明: 不需要声明参数类型,编译器可以自动识别参数类型和参数值。
可选的参数圆括号: 一个参数可以不用定义圆括号,但多个参数需要定义圆括号;
可选的大括号: 如果函数主体只包含一个语句,就不需要使用大括号;
可选的返回关键字: 如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指明表达式返回了一个数值。
1 Lambda 表达式的五种形式
1.1 不包含参数:
()->代码块
代码实例
//接口类
public interface LambdaInterface01 {
public void lambdaInterface01();
}
//测试类
public class LambdaExample01 implements LambdaInterface01 {
public static void main(String[] args) {
LambdaInterface01 example = () ->
System.out.println("不包含参数,执行啦");
example.lambdaInterface01();
}
@Override
public void lambdaInterface01() {
}
}
结果截图:
1.2 包含一个参数:
(一个参数)->代码块
我们可以把 () 省略。
//接口类
public interface LambdaInterface02 {
public int lambdaInterface02(int num);
}
//测试类
public class LambdaExample02 implements LambdaInterface02 {
public static void main(String[] args) {
LambdaInterface02 example = (int num) ->
System.out.println("传入的数据为" + num);
example.lambdaInterface02(3);
}
@Override
public void lambdaInterface02(int num) {
}
}
结果截图:
1.3 有多个参数
(参数1,参数2,……)->代码块
使用 () 把参数包裹起来,并用 , 来分割参数。上面的代码表示
//接口类
public interface LambdaInterface03 {
public int lambdaInterface03(int x, int y,int z);
}
//测试类
public class LambdaExample03 implements LambdaInterface03 {
public static void main(String[] args) {
LambdaInterface03 example = (int x, int y, int z) -> System.out.println("三个数字之和为"+ (x+y+z));
example.lambdaInterface03(10,9,8);
}
@Override
public void lambdaInterface03(int x, int y, int z) {
}
}
结果截图:
1.4 表达式主体是不是一个代码块
带有{},{}里面是代码块
//接口类
public interface LambdaInterface04 {
public void lambdaInterface04(String str);
}
//测试类
public class LambdaExample04 implements LambdaInterface04 {
public static void main(String[] args) {
LambdaInterface04 example = (String str)->{
if (str.isEmpty()){
System.out.println("字符串为空");
}
else {
System.out.println("字符串的内容为"+str);
}
};
example.lambdaInterface04("哈喽,我是演示带有代码块的字符串");
}
@Override
public void lambdaInterface04(String str) {
}
}
结果截图:
1.5 不声明参数类型
参数不被声明类型
举例:
ActionListener oneArguments = event -> System.out.println("hello world");
2 写在末尾
Lambda 表达式的基本语法就基本是这样子了,简单记录一下,不仅可以这样写,还可以返回参数什么的,暂时先写这些吧,以后会找时间记录一下的。
Lambda表示式其实都是为了简化接口实例化的代码。
灵活使用吧,掌握这些知识可以帮助我们快速的辨别一个 Lambda 表达式,方便的去理解程序的意图。