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作为该接口的实例

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

相关文章
|
7天前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
63 0
|
1月前
|
Java API 容器
Java基础学习day08-2
本节讲解Java方法引用与常用API,包括静态、实例、特定类型方法及构造器引用的格式与使用场景,并结合代码示例深入解析。同时介绍String和ArrayList的核心方法及其实际应用。
117 1
|
14天前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
119 0
|
13天前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
103 7
|
1月前
|
存储 SQL NoSQL
Redis-常用语法以及java互联实践案例
本文详细介绍了Redis的数据结构、常用命令及其Java客户端的使用,涵盖String、Hash、List、Set、SortedSet等数据类型及操作,同时提供了Jedis和Spring Boot Data Redis的实战示例,帮助开发者快速掌握Redis在实际项目中的应用。
209 1
Redis-常用语法以及java互联实践案例
|
1月前
|
Java
Java基础学习day08-作业
本作业涵盖Java中Lambda表达式的应用,包括Runnable与Comparator接口的简化实现、自定义函数式接口NumberProcessor进行加减乘及最大值操作,以及通过IntProcessor处理整数数组,实现遍历、平方和奇偶判断等功能,强化函数式编程实践。
55 5
|
1月前
|
Java 程序员
Java基础学习day08
本节讲解Java中的代码块(静态与实例)及其作用,深入介绍内部类(成员、静态、局部及匿名)的定义与使用,并引入函数式编程思想,重点阐述Lambda表达式及其在简化匿名内部类中的应用。
103 5
|
1月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
97 1
|
1月前
|
Java
Java基础学习day07-作业
本作业包含六个Java编程案例:1)动物类继承与多态;2)加油卡支付系统;3)员工管理类设计;4)学生信息统计接口;5)USB设备控制;6)家电智能控制。综合运用抽象类、接口、继承、多态等面向对象技术,强化Java基础编程能力。
151 3
|
1月前
|
Java
Java基础学习day06-作业
本内容为Java基础学习作业,涵盖两个案例:一是通过Card类及其子类GoldenCard、SilverCard实现加油卡系统,体现封装与继承;二是通过Shape类及子类Circle、Rectangle演示多态与方法重写,强化面向对象编程理解。
53 1