在一般数学计算中,lambda表达式就是函数:根据部分或所有输入的组合,返回相应的值。lambda表达式作为函数式思想被引入到了Java中。熟悉Java语法的朋友可以把lambda表达式看做是可以接受参数,返回类型,不可修改的,语法简洁的匿名方法。
语法:
(parameters) -> expression
或者
(parameters) -> { statements; }
例子:
1. (int x, int y) -> x + y // 接受两个整数,并返回两数的和
2. (x, y) -> x - y // 接受两个数,并返回差值
3. () -> 42 // 不接受参数,直接返回42
4. (String s) -> System.out.println(s) // 接受字符串,打印标准输出,没有返回值
5. x -> 2 * x // 接受数字,并返回该值的2倍
6. c -> { int s = c.size(); c.clear(); return s; } // 接受一个集合。清空该集合,
返回该集合未清空前的长度
语法注意点:
- 可以明确的指出参数类型(比如,1,4)也可以不明确指出(2,5,6).在单个lambda表达式中,
无论你明不明确指出参数类型都是没有关系的。 - lambda表达式的表达式体可以是个语句块(被大括号包围,例如:6)或者是个表达式(例如:1-5)。
语句块式的表达式体能返回值或者不返回。使用或省略return关键字的规则和普通的方法体相同。
- 如果表达式体是个表达式,那么它也可以返回值(例如:1,2,3,5),也可以不返回(例如:4)
- 如果表达式只有一个参数那么括号可以省略(例如:5,6)
- 例子6后的注释说此lambda表达式需要一个集合作为参数。而实际上,根据上下文环境的不同,
此表达式不限于集合参数,只要参数包含size方法和clear方法,并且接受合适的参数且返回合适的类型即可。