Skip to content

Demo for Collectors, StreamAPI and LambdaExpression in Java8

Notifications You must be signed in to change notification settings

Vekaco/Java8Features

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lambda表达式是Java SE 8中一个重要的新特性,lambda表达式允许你通过表达式来代替功能接口。
Lambda表达式是能嵌入到其他表达式当中的匿名函数(闭包)。
它的第一个重要意义是可以在表达式当中直接定义一个函数,而不需要将定义函数和表达式分开,这样有助于将逻辑用更紧凑的方式表达出来。
它的第二个重要意义是引入了闭包。闭包是指将当前作用域中的变量通过值或者引用的方式封装到lambda表达式当中,成为表达式的一部分,它使你的lambda表达式从一个普通的函数变成了一个带隐藏参数的函数。
它的第三个重要意义(如果有的话)是允许函数作为一个对象来进行传递。
Lambda表达式的语法
基本语法:
(parameters) -> expression

(parameters) -> statement

(parameters) ->{ statements; }
Lambda表达式由三部分组成:
1、paramaters:

类似方法中的形参列表,这里的参数是函数式接口里的参数。这里的参数类型可以明确的声明也可不声明而由JVM隐含的推断1。另外当只有一个推断类型时可以省略掉圆括号。
2、->:
可理解为“被用于”的意思
3、方法体:
可以是表达式也可以代码块,是函数式接口里方法的实现。代码块可返回一个值或者什么都不反回,这里的代码块块等同于方法的方法体。如果是表达式,也可以返回一个值或者什么都不反回。
下面是Java lambda表达式的简单例子:
示例1:
不需要接受参数,直接返回5
()->5
示例2:
接受两个int类型的参数,求和并返回结果
(int x,int y)->x+y;
示例3:
接受x,y两个参数,该参数的类型由JVM根据上下文推断出来,并返回两个参数的和
(x,y)->x+y;
示例4:
接受一个字符串,并将该字符串打印到控制到,不反回结果
(String name)->System.out.println(name);
示例5:
接受一个推断类型的参数name,并将该字符串打印到控制台
name->System.out.println(name);
示例6:
接受两个int类型参数,并分别输出,且求和,并输出求和结果
(int a,int b)->{System.out.println(a);System.out.println(b);System.out.println(a+b);}

About

Demo for Collectors, StreamAPI and LambdaExpression in Java8

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages