[FAQ]什么是lambda表达式

来源:互联网 发布:淘宝卖露华浓的 编辑:程序博客网 时间:2024/06/09 13:58

    在一般数学计算中,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. 可以明确的指出参数类型(比如,1,4)也可以不明确指出(2,5,6).在单个lambda表达式中,无论你明不明确指出参数类型都是没有关系的。
  2. lambda表达式的表达式体可以是个语句块(被大括号包围,例如:6)或者是个表达式(例如:1-5)。语句块式的表达式体能返回值或者不返回。使用或省略return关键字的规则和普通的方法体相同。
  1. 如果表达式体是个表达式,那么它也可以返回值(例如:1,2,3,5),也可以不返回(例如:4)
  2. 如果表达式只有一个参数那么括号可以省略(例如:5,6)
  1. 例子6后的注释说此lambda表达式需要一个集合作为参数。而实际上,根据上下文环境的不同,此表达式不限于集合参数,只要参数包含size方法和clear方法,并且接受合适的参数且返回合适的类型即可。