【Java】Lambda表达式

简介: 【Java】Lambda表达式

1.Lambda表达式

1.1 函数式编程思想概述

在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿数据做操作”

面向对象思想强调“必须通过对象的形式来做事情

函数式思想则尽量忽略面向对象的复杂语法:“强调做什么,而不是以什么形式去做”

而我们要学习的 Lambda 表达式就是函数式思想的体现

1.2Lambda表达式的标准格式

匿名内部类中重写 run() 方法的代码分析

方法形式参数为空,说明调用方法时不需要传递参数

方法返回值类型为 void ,说明方法执行没有结果返回

方法体中的内容,是我们具体要做的事情

Lambda 表达式的代码分析

() :里面没有内容,可以看成是 方法 形式参数为空

-> :用 箭头指向后面要做的事情

{ } :包含一段代码,我们称之为代码块,可以看成是 方法体中的内容

组成 Lambda 表达式的三要素: 形式参数 , 箭头 , 代码块

20210630103640901.png

1.3 Lambda表达式的标准格式

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

形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可

-> :由英文中画线和大于符号组成,固定写法。代表指向动作

代码块:是我们具体要做的事情,也就是以前我们写的方法体内容

Lambda 表达式的使用前提

有一个接口

接口中有且仅有一个抽象方法

1.4 Lambda表达式的省略模式

省略规则:

参数类型可以省略。但是有多个参数的情况下,不能只省略一个

如果参数有且仅有一个,那么小括号可以省略

如果代码块的语句只有一条,可以省略大括号和分号,甚至是 return

1.5 Lambda表达式的注意事项

注意事项:

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

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

根据 局部变量的赋值 得知 Lambda 对应的接口: Runnable r = () -> System.out.println ("Lambda 表达式 ");

根据 调用方法的参数 得知 Lambda 对应的接口: new Thread(() -> System.out.println ("Lambda 表达式 ")).start ();

1.5 Lambda表达式和匿名内部类的区别

所需类型不同

匿名内部类:可以是接口,也可以是抽象类,还可以是具体类

Lambda 表达式:只能是接口

使用限制不同

如果接口中有且仅有一个抽象方法,可以使用 Lambda 表达式,也可以使用匿名内部类

如果接口中多于一个抽象方法,只能使用匿名内部类,而不能使用 Lambda 表达式

实现原理不同

匿名内部类:编译之后,产生一个单独的 .class 字节码文件

Lambda 表达式:编译之后,没有一个单独的 .class 字节码文件。对应的字节码会在运行的时候动态生成


目录
相关文章
|
2天前
|
Java 开发者
Java一分钟之-Lambda表达式与函数式接口
【5月更文挑战第12天】Java 8引入的Lambda表达式简化了函数式编程,与函数式接口结合,实现了代码高效编写。本文介绍了Lambda的基本语法,如参数列表、箭头符号和函数体,并展示了如何使用Lambda实现`Runnable`接口。函数式接口仅有一个抽象方法,可与Lambda搭配使用。`@FunctionalInterface`注解用于确保接口具有单一抽象方法。文章还讨论了常见的问题和易错点,如非函数式接口、类型冲突以及Lambda表达式的局部变量可见性,并提供了避免这些问题的策略。通过理解Lambda和函数式接口,开发者能提高代码可读性和效率。
40 4
|
2天前
|
Java
探索Java世界的奇妙工具——运算符与表达式运算符
探索Java世界的奇妙工具——运算符与表达式运算符
8 0
|
1天前
|
Java API
Java 8新特性之Lambda表达式与Stream API实践指南
【5月更文挑战第15天】 随着Java语言的不断发展,Java 8作为一个重要的版本,引入了许多令人兴奋的新特性。其中,Lambda表达式和Stream API是Java 8最受关注的两个特性。本文将深入探讨Lambda表达式的基本概念、语法和使用场景,以及如何结合Stream API实现更加简洁、高效的代码编写。通过实例演示,帮助读者快速掌握这两个新特性,提高Java编程能力。
|
2天前
|
Java
Java正则表达式去掉非汉字字符
【5月更文挑战第11天】Java正则表达式去掉非汉字字符
15 3
|
2天前
|
Java API 开发者
Java中Lambda表达式的深入理解与应用
【5月更文挑战第12天】在Java 8之后,Lambda表达式已经成为了Java开发者必备的技能之一。Lambda表达式以其简洁、灵活的特点,大大提高了编程的效率。本文将深入探讨Lambda表达式的基本概念,语法规则,以及在实际开发中的应用,帮助读者更好地理解和使用Lambda表达式。
|
2天前
|
Java 程序员 API
Java 8新特性之Lambda表达式与Stream API的深度解析
【5月更文挑战第12天】本文将深入探讨Java 8中的两个重要新特性:Lambda表达式和Stream API。我们将从基本概念入手,逐步深入到实际应用场景,帮助读者更好地理解和掌握这两个新特性,提高Java编程效率。
41 2
|
2天前
|
算法 安全 Java
Java表达式和规则引擎的比较与考量
Java表达式和规则引擎的比较与考量
10 0
|
2天前
|
Java
【JAVA进阶篇教学】第二篇:JDK8中Lambda表达式
【JAVA进阶篇教学】第二篇:JDK8中Lambda表达式
|
2天前
|
Java
Java一分钟之运算符与表达式初探
【5月更文挑战第7天】本文介绍了Java中的主要运算符,包括算术、比较、逻辑、位、赋值和条件运算符。讨论了类型转换、运算顺序和逻辑短路等常见问题,并提供了避免错误的建议。通过代码示例展示了运算符的使用,强调理解运算符对于编写高效Java代码的重要性。
23 0
Java一分钟之运算符与表达式初探
|
2天前
|
分布式计算 Java API
Java8 Lambda实现源码解析
Java8的lambda应该大家都比较熟悉了,本文主要从源码层面探讨一下lambda的设计和实现。
162549 6