广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Lambda表达式详解
  • 805
分享到

Lambda表达式详解

javajvm算法 2023-09-01 05:09:42 805人浏览 薄情痞子
摘要

Lambda表达式 1. 为什么使用lambda表达式2. 入门案例3. lambda表达式组成4. lambda表达式使用4.1 语法格式一4.2 语法格式二4.3 语法格式三4.4 语法格

Lambda表达式

1. 为什么使用lambda表达式

lambda是一个匿名函数,我们可以吧lambda表达式理解为是一段可以传递的代码。使用它可以写出更简洁,更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。

2. 入门案例

先看一个简单的Java线程中的Runnable接口案例

public void test01(){        Runnable ri = new Runnable() {            @Override            public void run() {                System.out.println("好好学习,天天向上");            }        };        ri.run();    }

在这里插入图片描述

再看下使用了Lambda表达式的版本

 public void test02(){        Runnable r2 = ()-> System.out.println("学会lambda,快乐每一天");        r2.run();    }

在这里插入图片描述

相信看到这里,对Lambda表达式的第一印象就是代码怎么这么短,这也就是lambda表达式的特性:简洁。

再看一个案例,比较数的大小

public void test03(){        Comparator<Integer> comparator = new Comparator<Integer>() {            @Override            public int compare(Integer o1, Integer o2) {                return Integer.compare(o1,o2);            }        };        int compare = comparator.compare(12, 21);        System.out.println(compare);    }

在这里插入图片描述

因为12是小于21的,所以这里返回的是-1;我们再来看看对应的lambda表达式的写法

 public void test04(){        Comparator<Integer> comparator = (o1,o2)-> Integer.compare(o1,o2);        int compare = comparator.compare(32,23);        System.out.println(compare);    }

在这里插入图片描述

因为32大于23,所以返回值为1;

3. lambda表达式组成

形如以下:

(o1,o2) -> Integer.compare(o1,o2)

左边 -> 右边

  • -> 被称为lambda操作符或箭头操作符
  • 左边:lambda形参列表(其实就是接口中的抽象方法的形参列表)
  • 右边:lambda体 (其实就是重写的抽象方法的方法体)

4. lambda表达式使用

4.1 语法格式一

无参无返回值

public void test01(){        Runnable ri = new Runnable() {            @Override            public void run() {                System.out.println("好好学习,天天向上");            }        };        ri.run();    }
 public void test02(){        Runnable r2 = ()-> {System.out.println("学会lambda,快乐每一天");};        r2.run();    }

4.2 语法格式二

需要一个参数但无返回值

public void test05(){        Consumer<String> consumer = new Consumer<String>() {            @Override            public void accept(String s) {                System.out.println(s);            }        };        consumer.accept("这一路上走走停停");    }
public void test06(){        Consumer<String> consumer = (String s)->{System.out.println(s);};        consumer.accept("留下少年漂流的痕迹");    }

4.3 语法格式三

数据类型可以省略,由编译器去推断出,称为“类型推断”

public void test05(){        Consumer<String> consumer = new Consumer<String>() {            @Override            public void accept(String s) {                System.out.println(s);            }        };        consumer.accept("这一路上走走停停");    }
public void test06(){        Consumer<String> consumer = (s)->{System.out.println(s);}//类型推断        consumer.accept("留下少年漂流的痕迹");    }

这里有些类似于使用集合类是前面指明过泛型后,后边不需要再次指明

4.4 语法格式四

lambda若只需要一个参数时,参数的小括号可以省略

public void test05(){        Consumer<String> consumer = new Consumer<String>() {            @Override            public void accept(String s) {                System.out.println(s);            }        };        consumer.accept("这一路上走走停停");    }
public void test06(){        Consumer<String> consumer = s->{System.out.println(s);}//类型推断        consumer.accept("留下少年漂流的痕迹");    }

4.5 语法格式五

lambda需要两个或以上的参数,多条执行语句,并且可以有返回值

   public void test03(){        Comparator<Integer> comparator = new Comparator<Integer>() {            @Override            public int compare(Integer o1, Integer o2) {                System.out.println(o1);                System.out.println(02);                return Integer.compare(o1,o2);            }        };        int compare = comparator.compare(12, 21);        System.out.println(compare);    }
public void test04(){     Comparator<Integer> comparator = (o1,o2)-> {         System.out.println(o1);        System.out.println(02);        return Integer.compare(o1,o2);};    int compare = comparator.compare(32,23);    System.out.println(compare);}

4.6 语法格式六

当lambda体只有一条语句时,return与大括号若有,都可以省略

public void test03(){        Comparator<Integer> comparator = new Comparator<Integer>() {            @Override            public int compare(Integer o1, Integer o2) {                return Integer.compare(o1,o2);            }        };        int compare = comparator.compare(12, 21);        System.out.println(compare);    }
 public void test04(){        Comparator<Integer> comparator = (o1,o2)-> Integer.compare(o1,o2);        int compare = comparator.compare(32,23);        System.out.println(compare);    }

5. 总结

lambda接口的实质:作为函数式接口的实例,关键是这个匿名内部类的简化,省略。

来源地址:https://blog.csdn.net/m0_64102491/article/details/127272988

--结束END--

本文标题: Lambda表达式详解

本文链接: https://www.lsjlt.com/news/387552.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Lambda表达式详解
    Lambda表达式 1. 为什么使用lambda表达式2. 入门案例3. lambda表达式组成4. lambda表达式使用4.1 语法格式一4.2 语法格式二4.3 语法格式三4.4 语法格...
    99+
    2023-09-01
    java jvm 算法
  • C++Lambda表达式详解
    目录概述语法分析捕获列表关键字声明示例捕获列表按值传递总结概述 C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下: ...
    99+
    2022-11-12
  • python3 lambda表达式详解
    技术背景 lambda表达式本身是一个非常基础的python函数语法,其基本功能跟使用def所定义的python函数是一样的,只是lambda表达式基本在一行以内就完整的表达了整个函数的运算逻辑。这里我们简单展示一些...
    99+
    2022-06-02
    python的lambda函数 python中lambda的用法 python lambda函数怎么用
  • java lambda表达式详解
    一、Lambda初识 我们知道,在Java中,接口是不能实例化的,但是接口对象可以指向它的实现类对象。如果接口连实现对象都没有呢?那还可以使用匿名类的方式,如下: public class JavaTest { public ...
    99+
    2023-09-15
    java servlet jvm
  • C#3.0中Lambda表达式详解
    在C#2.0中,微软给我们带来了一些新的特性,例如泛型,匿名委托等。然而,这些新的特性多多少少会给人一种从别的语言中“抄”来的感觉(例如泛型类似C++的模板,一些特性类似Java中的...
    99+
    2022-11-15
    C# Lambda
  • Java 8的Lambda表达式详解
    本篇内容介绍了“Java 8的Lambda表达式详解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!功能接口只包含一个方法的接口被称为功能接口...
    99+
    2023-06-17
  • 详细解读Java的Lambda表达式
    目录Lambda 表达式Lambada 简介简单的示例Lambda 表达式的组成部分函数式接口介绍几个 Java 中重要的函数接口Lambda 表达式 最早接触到 Lambda 表达...
    99+
    2023-05-14
    Java Lambda表达式 Lambda表达式
  • Java8新特性-Lambda表达式详解
    目录一、简介 特征引入Lambda表达式的总结三、Lambda表达式的使用无参、无返回值有参无返回值无参数有返回值有参数有返回值四、Lambda表达式的注意事项 ...
    99+
    2023-05-16
    java8新特性 lambda表达式 java8 lambda表达式
  • python中的lambda表达式用法详解
    本文实例讲述了python中的lambda表达式用法。分享给大家供大家参考,具体如下: 这里来为大家介绍一下lambda函数。 lambda 函数是一种快速定义单行的最小函数,是从 Lisp 借用来的,可以...
    99+
    2022-06-04
    表达式 详解 python
  • Java中Lambda表达式的使用详解
    目录理解函数式接口以及 Lambda表达式的发展过程Lambda表达式及语法一起来看看具体的使用你需要注意什么Lambda的实际运用1.对集合排序2.遍历集合3.遍历集合(带条件)4...
    99+
    2022-11-12
  • Java中Lambda表达式使用及详解
    Java中Lambda表达式使用及详解 前言 一、Lambda表达式的简介 Lambda表达式(闭包):java8的新特性,lambda运行将函数作为一个方法的参数,也就是函数作为参数传递到方法中。使用lambda表达式可以让代码更加...
    99+
    2023-08-16
    java
  • 详解Java函数式编程和lambda表达式
    目录为什么要使用函数式编程JDK8接口新特性函数接口方法引用类型推断变量引用级联表达式和柯里化为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论。函数式与命令...
    99+
    2022-11-12
  • 【javaSE】 Lambda表达式与Lambda表达式的使用
    文章目录 🌳Lambda表达式的背景🚩Lambda表达式的语法🚩函数式接口 🎋Lambda表达式的基本使用🎄...
    99+
    2023-09-15
    开发语言 java Lambda表达式 源码
  • Java中Lambda表达式使用详细解读
    目录前言一、Lambda表达式的简介二、Lambda表达式对接口的要求1.函数式接口2.@FunctionalInterface3.Lambda表达式的语法1.Lambda表达式的基...
    99+
    2023-05-18
    java  Lambda表达式使用 java  Lambda表达式 Lambda表达式使用
  • C++实例详解lambda表达式的使用
    目录lambda表达式1、lambda表达式语法2、lambda应用3、lambda表达式的应用实践1、计算器案例2、智能指针案例3、优先级队列lambda表达式 C++11 函数对...
    99+
    2022-11-13
  • 详解Kotlin 高阶函数 与 Lambda 表达式
    详解Kotlin 高阶函数 与 Lambda 表达式高阶函数(higher-order function)是一种特殊的函数, 它接受函数作为参数, 或者返回一个函数. 这种函数的一个很好的例子就是 lock() 函数, 它的参数是一个锁对象...
    99+
    2023-05-31
    kotlin 高阶函数 lambda
  • Java Lambda 表达式
    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Java Lambda 表达式 Java L...
    99+
    2023-09-27
    java python 开发语言
  • Lambda表达式(JAVA)
    注:如果没有学过匿名内部类和接口不推荐往下看。 Lambda表达式的语法: (parameters) -> expression 或 (parameters) ->{ statements; } parameters:表示参数列表;->:可...
    99+
    2023-10-27
    java 开发语言 数据结构 lambda
  • C# 内部类与Lambda表达式用法详解
    目录一、内部类1.什么是内部类?1.类作为形参和返回值:2.内部类的几种形式二、Lambda表达式(强调做什么,而不是以什么形式去做)1.Lambda表达式的格式要求:2.Lambd...
    99+
    2022-11-12
  • C++学习之Lambda表达式的用法详解
    目录简介捕获原理Lambda回调简介 Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作