【JavaSE】Lambda

简介: 【JavaSE】Lambda

一、Lambda概述

1、函数式编程思想

拿数据做操作,有悖于面对对象操作

强调做什么,而不是过程

2、Lambda使用前提

有一个接口

接口只有一个抽象方法

二、Lambda标准格式

(形式参数) -> {代码块}

():形式参数

->:箭头

{}:代码块

三、Lambda使用

1、无参无返

public interface test1 {
   
    void domain();
}
public class doDemo1 {
   
    public static void main(String[] args) {
   
        doDoMain(() -> System.out.println("domain"));
    }

    public static void doDoMain(test1 t){
   
        t.domain();
    }
}

2、带参无返

public interface test2 {
   
    void domain(String s);
}
public class doDemo2 {
   
    public static void main(String[] args) {
   
        doDoMain((String s) -> {
   
            System.out.println(s);
        });
        doDoMain((s) -> System.out.println(s));
        doDoMain(s -> System.out.println(s));
    }

    public static void doDoMain(test2 t) {
   
        t.domain("domain");
    }
}

3、带参有返

public interface test3 {
   
    int add(int a, int b);
}
public class doDemo3 {
   
    public static void main(String[] args) {
   
        doAdd((int a, int b) -> {
   
            return a + b;
        });
        doAdd((a, b) -> a + b);
    }

    public static void doAdd(test3 t) {
   
        int sum = t.add(10, 20);
        System.out.println(sum);
    }
}

4、使用说明

1)Lambda的实现

先使用方法,后定义方法体

2)关于lambda的省略

  1. 形式参数类型可以省略,但是”不患寡而患不均“
  2. 形式参数如果只有一个可以省略小括号
  3. 代码块如果只有一条,可以省略大括号和分号(对于return语句,需要省略掉return)

3)上下文环境

必须有上下文环境,才能推导出lambda对应的接口

  1. 局部变量的赋值
  2. 调用方法的参数

四、Lambda与匿名内部类的区别

1、所需类型不同

匿名内部类:接口、抽象类、具体类

Lambda:接口

2、使用限制不同

匿名内部类:无抽象方法个数限制

Lambda:只能有一个抽象方法

3、实现原理不同

匿名内部类:产生一个class字节码文件

Lambda:字节码动态生成

目录
相关文章
|
8月前
|
Java
Java表达式Lambda
Java表达式Lambda
38 0
|
17小时前
|
Java 程序员 编译器
JavaSE&Java8 Lambda 表达式
JavaSE&Java8 Lambda 表达式
|
17小时前
|
Java 开发者
探索 Java 的函数式接口和 Lambda 表达式
【4月更文挑战第19天】Java 中的函数式接口和 Lambda 表达式提供了简洁、灵活的编程方式。函数式接口有且仅有一个抽象方法,用于与 Lambda(一种匿名函数语法)配合,简化代码并增强可读性。Lambda 表达式的优点在于其简洁性和灵活性,常用于事件处理、过滤和排序等场景。使用时注意兼容性和变量作用域,它们能提高代码效率和可维护性。
|
17小时前
|
Java 编译器
Java Lambda 表达式
Java Lambda 表达式
27 0
|
17小时前
|
Java 编译器
Java Lambda 表达式笔记
Java Lambda 表达式笔记
38 0
|
5月前
|
存储 Java
关于Java 中的 Lambda 表达式你了解多少?
关于Java 中的 Lambda 表达式你了解多少?
31 0
|
12月前
|
存储 Java
Java 8 - 02 Lambda Expression
Java 8 - 02 Lambda Expression
57 0
|
Java 编译器
Java Lambda 表达式能干什么?
Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像参数一样进行传递,称为行为参数化)。Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)
132 0
|
JavaScript 前端开发 Java
Java 8 Lambda 表达式相关
Java 8 之后推出的 Lambda 表达式开启了 Java 语言支持函数式编程(Functional Programming)的新时代。 Lambda 表达式,也称为闭包(Closure),现在很多语言都支持 Lambda表达式,如 C++、C#、Swift、Objective-C 和 JavaScript 等。为什么 Lambda 表达式这怎么受欢迎,这是因为Lambda表达式是实现支持函数式编程技术基础。 函数式编程与面向对象编程有很大的差别,函数式编程将程序代码看作数学中的函数,函数本身作为另一个函数的参数或返回值,即高阶函数。而面向对象编程是按照真实世界客观事物的自然规律进行分析,
130 0
|
机器学习/深度学习 自然语言处理 搜索推荐
理解和运用Java中的Lambda(上)
回想一下,JDK8是2014年发布正式版的,到现在为(2020-02-08)止已经过去了5年多。JDK8引入的两个比较强大的新特性是Lambda表达式(下文的Lambda特指JDK提供的Lambda)和Stream,这两个强大的特性让函数式编程在Java开发中发扬光大。这篇文章会从基本概念、使用方式、实现原理和实战场景等角度介绍Lambda的全貌,其中还会涉及一些函数式编程概念、JVM一些知识等等。
85 0
理解和运用Java中的Lambda(上)