java学习之高级语法(十九)----- Lambda表达式

简介: java学习之高级语法(十九)----- Lambda表达式

函数式编程思想

面向对象的思想:做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情

函数式编程思想:只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程

Lambda 表达式

▶  体验Lambda的更优写法

image.gif编辑

输出:

       image.gif编辑

▶  Lambda 标准格式

Lambda标准格式由三部分组成:

一些参数 、一个箭头 、一段代码

格式: (参数列表)-> { 一些重写方法的代码 };

解释说明格式: ()---  接口中抽象方法的参数列表,没有参数就空着,有参数就写出参数,多个参数使用逗号分隔

                            -> --- 传递的意思,把参数传递给方法体

                            { } --- 重写接口的抽象方法的方法体

▶  练习:使用Lambda标准格式(无参无返回)

题目:给定一个厨子‘ Cook ’接口,内含唯一的抽象方法 makeFood ,且无参数,无返回值,如下

public interface Cook {
  void makeFood() ;
}

image.gif

在下面的代码中,使用Lambda的标准格式调用invokeCook方法,打印输出 “ 吃饭啦!” 字样

public class Demo03 {
  public static void main(String[] args) {
    // 在这里使用lambda的标准格式调用invokeCook方法
  }
  private static void invokeCook(Cook cook) {
    cook.makeFood();
  }
}

image.gif

解答:

image.gif编辑

image.gif编辑

▶  Lambda 的参数和返回值

需求:  使用数组存储多个Person对象,对数组中的Person对象使用Arrays的sort方法通过年龄进行升序排序

image.gif编辑

▶  练习:使用Lambda标准格式(有参有返回)

题目:给定一个计算器Calculator接口,内含抽象方法calc,可以将两个int数字相加得到和值

image.gif编辑

▶  Lambda省略格式

Lambda表达式是可推导,可以省略 ---  凡是根据上下文推导出来的内容,都可以省略书写

可以省略的内容:

(1)(参数列表):括号中参数列表的数据类型可以省略不写

(2)(参数列表):括号中的参数如果只有一个,那么类型和()都可以省略

(3)(一些代码):如果{ }中的代码只有一行,无论是否有返回值,都可以省略({ } ,return ,分号)

          注意:要省略 { } ,return ,分号必须一起省略

▶  Lambda的使用前提

Lambda的语法非常简洁,完全没有面向对象复杂的束缚,但是使用的时候需要注意:

(1)使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法

无论是JDK内置的Runnable、Comparator接口还是自定义的接口,只有当接口中的抽象方法存在且唯一时,才可以使用Lambda

(2)使用Lambda必须具有上下文推断

也就是方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lamda作为该接口的实例

备注:有且仅有一个抽象方法的接口,称为 “ 函数式接口 ”

相关文章
|
1天前
|
Java
java lambda 表达式中的双冒号和箭头的用法
java lambda 表达式中的双冒号和箭头的用法
|
1天前
|
存储 Java 程序员
JAVA基本语法
JAVA基本语法
8 1
|
1天前
|
Java API
Java 8新特性之Lambda表达式详解
【4月更文挑战第29天】本文将深入探讨Java 8中引入的Lambda表达式,这是Java历史上的一次重大变革。我们将详细解析Lambda表达式的基本概念,语法结构,以及如何在实际编程中应用。此外,我们还将探讨Lambda表达式与函数式接口的关系,以及它如何改变我们编写和理解Java代码的方式。
|
3天前
|
Java
Java学习——类与对象(二)
Java学习——类与对象(二)
|
3天前
|
Java C++
Java学习——类与对象(一)
Java学习——类与对象(一)
|
4天前
|
并行计算 Java API
【专栏】Java中的Lambda表达式应用与实例解析
【4月更文挑战第27天】Java 8的Lambda表达式增强了函数式编程,允许以匿名函数形式传递行为。其基本语法`(params) -> expression/statements`,类型由参数推断,可引用final或effectively final的外部变量。Lambda广泛应用于集合操作(如Stream API)、并行流处理和GUI事件处理,简化代码并提高效率。通过实例,展示了Lambda在集合筛选、并行计算和事件处理中的应用,从而提高开发质量和效率。
|
5天前
|
Java 编译器 API
Java基础教程(17)-Java8中的lambda表达式和Stream、Optional
【4月更文挑战第17天】Lambda表达式是Java 8引入的函数式编程特性,允许函数作为参数或返回值。它有简洁的语法:`(parameters) -> expression 或 (parameters) ->{ statements; }`。FunctionalInterface注解用于标记单方法接口,可以用Lambda替换。
|
5天前
|
Java 测试技术 程序员
滚雪球学Java(21):Java正则表达式
【4月更文挑战第10天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
15 2
滚雪球学Java(21):Java正则表达式
|
2月前
|
分布式计算 Java API
Java 8新特性之Lambda表达式和Stream API
【2月更文挑战第18天】随着Java 8的发布,Lambda表达式和Stream API成为了Java开发者的新宠。本文将详细介绍Lambda表达式的基本语法、使用方法以及与Stream API的结合,帮助读者更好地理解和运用这些新特性,提高代码的简洁性和可读性。
|
2月前
|
Java API
Java 8新特性之Lambda表达式与Stream API
【2月更文挑战第21天】本文将介绍Java 8中的两个重要特性:Lambda表达式和Stream API。Lambda表达式是Java 8中引入的一种新的编程语法,它允许我们将函数作为参数传递给方法,从而使代码更加简洁、易读。Stream API是一种用于处理集合的新API,它提供了一种高效且易于使用的处理数据的方式。本文将通过实例讲解这两个特性的基本用法以及它们如何帮助我们编写更简洁、高效的Java代码。