Java 笔记-基础篇-Lambda表达式方法引用

简介: Java 笔记-基础篇-Lambda表达式方法引用

一、什么是方法引用

方法引用是java8中特定情况下简化lambada表达式的一种语法糖,这里的特定情况是指当调用现有的方法时可以用方法引用替代lambada表达式,其他情况下,则不可以替代。
如下图例子:
2.png

上图中使用lambada表达式和方法引用的效果是等价的,我们看到其实方法引用看着要更加简洁。

方法引用左右使用“::”双冒号隔开,左边是具体的类,右面是调用的具体的方法。上面的out实际上是System类中的一个PrintStream类型的常量(声明为final),PrintStream是java中的一个类,上面“::”右边的println方法就在这个类中定义,这个类中除了println方法,还有print,printf等输出方法。

在Lambda表达式中,将其划分了几块。这一行就是lambda表达式。() -> System.out.println("使用Lambda表达式");下面我们对lambda的格式进行一个介绍:
(1)左边括号:lambda的形参列表,就好比是我们定义一个接口,里面有一个抽象方法,这个抽象方法的形参列表。
(2)箭头:lambda的操作符,所以你看见这个箭头心中知道这是一个lambda表达式就可以了。
(3)右边lambda体:就好比是我们实现了接口中的抽象方法。
在最后一块中,有时候,lambda体可能仅仅调用一个已存在的方法,而不做任何其它事,对于这种情况,通过一个方法名字来引用这个已存在的方法会更加清晰。
所以我们来总结:方法引用是一个更加紧凑,易读的 Lambda 表达式,注意方法引用是一个 Lambda 表达式,其中方法引用的操作符是双冒号 "::"。

2、方法引用4大金刚

# 2.1静态方法引用(类名::静态方法名):
静态方法引用是一种表达式,lambada表达式的语法糖,参数默认传入,自己不能传入参数。静态方法调用是一种方法的调用形式,不能作为表达式使用,若有参数需要自己传入参数。

# 2.2实例方法引用(对象名::实例方法名):
和静态方法引用一样。实例方法引用就是在进行方法引用之前需要创建实例,通过实例对象名去引用方法。
#2.3类的实例方法引用(类名::实例方法名)
在方法调用中,是不能用类名直接调用实例方法的,但在方法引用中是可以有 类名::实例方法名 这种形式的。
2.4构造方法引用(类名::new)
构造方法引用就是通过new调用构造方法,创建一个对象。

相关文章
|
1月前
|
安全 Java API
Java中的Lambda表达式:简洁与功能的结合
Java中的Lambda表达式:简洁与功能的结合
352 211
|
1月前
|
安全 Java
Java中的Switch表达式:更简洁的多路分支
Java中的Switch表达式:更简洁的多路分支
409 211
|
12天前
|
数据采集 数据可视化 安全
最详细Java正则表达式详解
本文系统讲解Java正则表达式核心语法、API用法及性能优化技巧,结合代码示例与实战场景,助你掌握文本处理利器,提升开发效率。
212 0
|
1月前
|
算法 Java 开发者
Java 项目实战数字华容道与石头迷阵游戏开发详解及实战方法
本文介绍了使用Java实现数字华容道和石头迷阵游戏的技术方案与应用实例,涵盖GUI界面设计、二维数组操作、游戏逻辑控制及自动解法算法(如A*),适合Java开发者学习游戏开发技巧。
191 46
|
1月前
|
Java 编译器 API
Java Lambda表达式与函数式编程入门
Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
|
1月前
|
Java 编译器
Java 17 Switch表达式:更简洁、更强大的流程控制
Java 17 Switch表达式:更简洁、更强大的流程控制
|
2月前
|
安全 Java API
Java 集合高级应用与实战技巧之高效运用方法及实战案例解析
本课程深入讲解Java集合的高级应用与实战技巧,涵盖Stream API、并行处理、Optional类、现代化Map操作、不可变集合、异步处理及高级排序等核心内容,结合丰富示例,助你掌握Java集合的高效运用,提升代码质量与开发效率。
203 0
|
Java
JAVA方法的定义
JAVA方法的定义
187 0
|
6月前
|
存储 JSON Java
《从头开始学java,一天一个知识点》之:方法定义与参数传递机制
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问"`a==b`和`equals()`的区别",大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 🚀 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。上篇:《输入与输出:Scanner与System类》 | 下篇剧透:《方法重载与可变参数》。
138 25