JDK8新特性lambda

为什么需要lambda

Lambda 表达式为 Java 添加了缺失的函数式编程特点,尽管不完全正确,但是lambda使函数能独立存在。

 

lambda表达式简介

lambda表达式一种匿名函数,它没有说明方法,当你在某个地方需要使用某个方法一次,而且定义简单,使用lambda就不必在类中费力写声明与方法。

Java 中的 Lambda 表达式通常使用 (argument) -> (body) 语法书写,例如:

(arg1, arg2...) -> { body }

(type1 arg1, type2 arg2...) -> { body }

Lambda 表达式的结构

一个 Lambda 表达式可以有零个或多个参数 参数的类型既可以明确声明,也可以根据上下文来推断。

例如:(int a)与(a)效果相同 所有参数需包含在圆括号内,参数之间用逗号相隔。

例如:(a, b) 或 (int a, int b) 或 (String a, int b, float c) 空圆括号代表参数集为空。

例如:() -> 42 当只有一个参数,且其类型可推导时,圆括号()可省略。

例如:a -> return a*a Lambda 表达式的主体可包含零条或多条语句

如果 Lambda 表达式的主体只有一条语句,花括号{}可省略。

匿名函数的返回类型与该主体表达式一致 如果 Lambda 表达式的主体包含一条以上语句,则表达式必须包含在花括号{}中(形成代码块)。

匿名函数的返回类型与代码块的返回类型一致,若没有返回则为空

学习线程中一个经典的案例,使用Thread和Runable运行一个线程,在JDK1.8前我们是这样:

new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("123");            
    }
}).start();

使用了lambda之后我们可以简化成这样:

new Thread(() -> System.out.println("123")).start();

一个 Lambda 表达式可以有零个或多个参数,参数的类型既可以明确声明。

像上面的例子 () -> System.out.println("123"); 这种既是有零个参数。

x -> System.out.println(x); 这种则是有1个参数。

(int a, int b) -> return a + b; 这种则是由2个参数,以此类推。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值