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调用构造方法,创建一个对象。

相关文章
|
2天前
|
Java 开发者
Java中的Lambda表达式与函数式接口
【7月更文挑战第20天】本文深入探讨Java 8引入的Lambda表达式及其在函数式编程中的应用。我们将分析Lambda表达式如何简化代码、提高可读性,以及它与传统匿名内部类的区别。文章还将介绍函数式接口的概念,并通过实际示例展示如何利用Lambda表达式和函数式接口优化Java代码。
|
3天前
|
Java API 数据处理
探索Java中的Lambda表达式
【7月更文挑战第19天】本文将深入探讨Java 8中引入的Lambda表达式,这一特性极大地简化了代码编写,提高了开发效率。我们将从Lambda表达式的基础概念入手,逐步过渡到其语法结构、使用场景以及性能考量,最后通过实际案例演示其在Java中的应用。Lambda表达式不仅让代码更加简洁,还促进了函数式编程思想在Java中的普及。
|
6天前
|
缓存 Java 编译器
探索Java中的Lambda表达式及其优化实践
在Java 8中引入的Lambda表达式为函数式编程范式铺平了道路,极大地提升了代码的简洁性和可读性。本文将深入探讨Lambda表达式的内部机制和性能影响,并分享如何在实际开发中有效利用Lambda表达式以提升程序性能和开发效率的策略。 【7月更文挑战第16天】
19 5
|
3天前
|
并行计算 Java API
深入理解Java中的Lambda表达式与函数式接口
【7月更文挑战第19天】在Java 8中引入的Lambda表达式,不仅简化了代码编写,还为函数式编程提供了支持。本文将探讨Lambda表达式的核心概念、其与函数式接口的关系以及如何在Java中高效利用这一特性来提升代码的简洁性和可读性。我们将通过实例分析Lambda表达式的语法规则和常见用法,同时解释函数式接口的设计原则及其在Java标准库中的应用,旨在帮助开发者更好地理解和运用这一强大的工具。
|
4天前
|
Java 编译器 API
深入理解Java中的Lambda表达式
【7月更文挑战第18天】Lambda表达式是Java 8引入的一个重要特性,它允许我们将函数作为方法的参数或者将代码作为数据进行传递。本文将深入探讨Lambda表达式的基本概念、语法规则、以及在集合操作中的应用,帮助读者更好地理解和使用这一强大工具。
|
5天前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
15 2
Java初级笔记-第五章
第五章 面向对象的特点 5.1 继承 面向对象的重要特点之一就是继承。类的继承使得能够在已有的类的基础上构造新的类,新类除了具有被继承类的属性和方法外,还可以根据需要添加新的属性和方法。
1027 0
|
Java Windows 开发框架
Java初级笔记-第一章
第一章 Java概览 1.1 基本简介 Java是一种理想的面向对象的网络编程语言。 1991年,出现了Oak语言,旨在解决编程语言的选择和跨平台的问题。
1358 0
Java初级笔记-第二章
第二章 Java的基本数据类型、运算符及表达式 2.1 标识符 标识符是程序员对程序中的各个元素加以命名时使用的命名记号。
1187 0
|
存储 算法 Java
Java初级笔记-第三章
第三章 程序设计基础 3.1 流程图 3.1.1 什么是流程图: 流程图是通过箭头(流程线)相互连接的几何图形来表达程序运行的方法。
1401 0