lambda 学习

为什么起 lambda 表达式这个名字呢?逻辑学家 Alonzo Church 想要形式化的表示能有效计算的数学函数。然后他是用了 lambda(λ)来表示。Java中为什么要用字母 λ 呢?《数学原理》一书中用 重音符 ^ 表示自由变量,受此启发,就把带参数变量的表达式称为 lambda 表达式。

lambda 表达式

在 Java 中,lambda 表达式就是一个代码块,以及必须传入代码的变量规范。

lambda 表达式的语法

表达形式
参数,箭头(->)以及一个表达式。如果代码要完成一个计算,无法放在一个表达式中,就可以像写方法一样,把这些放在一个代码块 {} 中,并包含显示的 return 语句。例如:

(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 i = 0; i< 100; i++) {
        System.out.println(i);
    }
}

如果可以推导出一个 lambda 表达式的参数类型,则可以忽略参数的类型。例如:

Comparator<String> comp 
    = (first, second) -> first.length() - second.length();

如果方法只有一个参数,并且这个参数的类型可以由推导得出,那么就可以省略小括号:

ActionListener listener = event -> System.out.println();

无需指定lambda 表达式的返回类型。lambda 表达式的返回类型总是能由上下文推导出来

说点什么

avatar
  Subscribe  
提醒

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部