美文网首页JavaEE 学习专题技术干货
1.Java8新特性 - Lambda表达式学习笔记

1.Java8新特性 - Lambda表达式学习笔记

作者: Mr_欢先生 | 来源:发表于2018-10-22 22:21 被阅读251次

一.Lamdba 表达式的基础语法

Lamdba是一个匿名函数,Lamdba表达式是一段可以传递的代码。
Java8 中引用了一个新的操作符,-> 该操作符成为箭头操作符或者是Lamdba操作符,箭头操作符将Lamdba表达式拆分成两部分:参数列表 -> 执行的功能

二.Lambda表达式的重要特征

  • 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
  • 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
  • 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
  • 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

三.Lamdba表达式的实例

1.无参数,无返回值类型

    @Test
    public void test1() {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("Hello World!");
            }
        };
        runnable.run();
        //等价于
        Runnable runnable1 = () -> System.out.println("Hello World!");
        runnable1.run();
    }

2.有一个参数,并且无返回值(只有一个参数,小括号可以省略)

@Test
    public void test2(){
        Consumer consumer1 = new Consumer() {
            @Override
            public void accept(Object o) {
                System.out.println(o);
            }
        };
        consumer1.accept("Hello World");
        //等价于
        Consumer consumer2 = item -> System.out.println(item);
        consumer2.accept("Hello World");
    }

3.有两个以上的参数,有返回值(一条语句可以省略return 和大括号)

@Test
    public void test3(){
        Comparator<Integer> comparator = (x, y) -> Integer.compare(x,y);
    }

四.Lamdba表达式需要「函数式接口」的支持

函数式接口:接口中只有一个抽象方法的接口,成为函数式接口,可以用注解@FunctionalInterface修饰来检查是否是函数式接口

import org.junit.Test;

@FunctionalInterface
interface DemoInterface {
    int value(int num);
}

public class Lambda {
    @Test
    public void test() {
        int value = operation(10,num -> num * 2);
        System.out.println(value);
    }

    public int operation(Integer x, DemoInterface demo){
        return demo.value(x);
    }
}

注意:

lambda 表达式只能引用标记了 final 的外层局部变量,这就是说不能在lambda 内部修改定义在域外的局部变量,否则会编译错误。

相关文章

  • Lambda 表达式

    Lambda 表达式 声明:java8新特性系列为个人学习笔记,参考地址点击这里,侵删!! Lambda 表达式,...

  • 1.Java8新特性 - Lambda表达式学习笔记

    一.Lamdba 表达式的基础语法 Lamdba是一个匿名函数,Lamdba表达式是一段可以传递的代码。Java8...

  • Java 8、9 语言新特性

    Java语言新特性 Java8 Java 8 新特性 Lambda 表达式 Lambda表达式(也叫做闭包)是Ja...

  • 《Java 8实战》学习总结

    Java 8新特性概览 Lambda表达式 流 默认方法 Lambda表达式 Lambda和函数式接口Java 8...

  • Lambda表达式详解

    什么是Lambda表达式 Lambda表达式是Java 8的新特性,是函数式接口的实例。使用Lambda表达式可以...

  • Java8 之 Lambda 表达式与函数式接口

    一、Lambda 表达式 Lambda 表达式,也可称为闭包,它是 Java 8 发布的最重要新特性。Lambda...

  • java8 新特性

    java8 新特性 1 Lambda表达式 lambda 是一个匿名函数, lambda 表达式基本语法: jav...

  • Lambda in Android

    Android 如何实现支持 lambda 表达式 lambda 表达式是 java 8 新引入的语言特性,使用了...

  • Lambda表达式和函数式接口

    初识lambda表达式 lambda表达式是Java8的新特性,可以将lambda表达式看成是精简语法的匿名内部类...

  • Java8 新特性之 Lambda 表达式

    Lambda表达式 lambda表达式是java8给我们带来的几个重量级新特性之一,借用lambda表达式,可以让...

网友评论

本文标题:1.Java8新特性 - Lambda表达式学习笔记

本文链接:https://www.haomeiwen.com/subject/myrnzftx.html