您的位置:首页 > 编程语言 > Java开发

一、JAVA8学习笔记 Lambda表达式快速入门

2017-07-07 18:09 645 查看
第一节: 扯淡

学习java8中的Streams库一个目的就是采用最佳低级执行机制避免用synchronized编写代码。Java 8可以透明地把输入的不相关部分拿到几个CPU内核上去分别执行你的代码。Stream操作流水线——这是几乎免费的并行,用不着去费劲搞Thread了。

使用Java 8,你就是在保护你作为Java程序员的职业生涯^_^.

第二节: 函数式接口

函数式接口的概念:只定义一个抽象方法的接口

用函数式接口可以干什么呢? Lambda表达式允许你直接以内联的形式为函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实例,这个实例就是函数式接口一个具体实现。

举例说明:定义一个只有一个方法的接口,实现该接口打印字符串”Hello !”

第一步定义接口

@FunctionalInterface  // 作用类似于 @Overried 表示只能有一个接口
public interface ShowMsg {
void printMSG();
}


第二步实现接口

public class ShowMsgHello implements ShowMsg {
@Override
public void printMSG() {
System.out.println("Hello !");
}
}


第三部创建类的对象,调用对象方法

public static void main(String[] args) {
ShowMsg show = new ShowMsgHello();
show.printMSG();
}


如果采用Lambda表达式则可以不用定义实现类,直接一行代码即可:

public static void main(String[] args) {
ShowMsg show = () -> System.out.println("Hello !");
show.printMSG();
}


主要看操作符“->”请不要把它看成类似于C++里面的指针什么的,通俗讲它就是一个分割符,分割函数参数部分和函数体部分。整个“() -> System.out.println(“Hello !”)”这段代码其实就是接口ShowMsg的匿名类实例对象。

针对其他类别的抽象方法的处理如下:

(1)如果接口方法是:void printMSG(String msg);

则Lambda表达式:(msg) -> System.out.println(msg);

或者:msg -> System.out.println(msg); // 单个参数可以舍弃参数两边的”(”和”)”

(2)如果接口方法是:String printMSG( );

则Lambda表达式:() -> “Hello !”; // 这里无需 return 关键字

(3)如果函数体内语句多个则需要“{}”

Lambda表达式:() -> {String msg = “Hello !”; System.out.println(msg);};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java