一、概念
lambda表达式可理解为:简洁地表示可传递的匿名函数的一种方式。
1、匿名:不像普通方法那样有一个明确的名称
2、函数:lambda不像方法那样属于某个特定的类,但和方法一样,lambda有参数列表、方法主体、返回值、可抛出的异常列表
3、传递:lambda可以 作为参数 传递给方法或者存储在变量中 (个人理解其实就是函数式编程)
4、简洁:无需像匿名类那样写很多的模板代码
二、语法
1、语法格式
参数列表 箭头 lambda主体
(parameters) → expression 或 (parameters) → { statements; }
2、语法特征
1) 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
2) 可选的参数圆括号():一个参数无需定义圆括号,但多个参数需要定义圆括号。
3) 可选的大括号{}:如果主体只包含一个语句,就不需要使用大括号。注意:没有大括号也不要用return和;
4) 可选的返回关键字return:
I:如果主体只有一个表达式返回值则编译器会自动返回值,即可省略return
II:大括号需要指明表达式返回了一个数值,即{}内有返回值,必须加return
三、栗子
#只有一句,且为返回语句,可省略{}、return、;
1) (String s) -> s.length()
(String s) -> {return s.length();}
#只有一个参数,可省略() :当编译器无法推导出参数类型时,要给定参数类型
2) s -> s + ""
#无参/无返回
3) () -> {}