简述java的lambda表达式

lambda表达式是在java 8的时候出现的
lambda表达式是一段可以传递的代码,因此它可以被执行一次或多次

lambda的表达式语法格式也十分简单:参数、箭头(->)和一个表达式,即:

(String first, String second) -> {
	if (first.length() < second.length()) return -1;
	else if (first.length() > second.length()) return 1;
	else return 0;
}

这就是一个简单的lambda表达式
在没有参数的时候,我们就可以用空的()表示,即:

() -> { 
	for (int 1 = 0, i < 10, i++) 
		//dosomething
}

当然如果参数的类型可以通过前后文语句推倒,则可以省略

EventHander<ActionEvent> listener = event -> {
	System.out.println("click!");
}

由前面可知,event是个ActionEvent类型可省略

lambda表达式中方法的引用

  • 对象:实例方法
  • 类:实例方法
  • 类:静态方法
    如:触发按钮事件时打印按钮对象
button.setOnAction(event -> System.out.println(event))
button.setOnAction(System.out::println)

还有比如:
this::equals = str -> this.equals(str)
super::实例方法 = () -> super.greet()

lambda表达式的变量作用域
如果想在lambda闭合的方法或类中使用其他变量,即

public static void printMsg(String msgs, int count) {
        Runnable r = () -> {
            for (int i = 0; i < count; i++) {
                System.out.println(msgs);
                Thread.yield();
            }
        };
        new Thread(r).start();
    }

调用时:

printMsg("Hello World!", 100);

这样lambda表达式中就可以访问变量msgs和count

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值