Java1.8新特性Lambda表达式

简介: Java1.8新特性Lambda表达式

一、前言

1.什么是Lambda表达式

Lambda表达式是java1.8新特性,Lambda表达式是一种匿名函数,可以作为参数传递给其他函数或方法,并且可以在需要时动态创建,主要用途是简化代码。

2.为什么要使用Lambda表达式

       使用lambda表达式的主要优点是代码简洁和可读性高。使用lambda表达式可以将一个函数作为数据传递给其他函数或方法,这种函数式编程的思想被广泛应用于现代编程中,可以使代码更加简洁,易于维护和重用。

       另外,使用lambda表达式可以避免冗长的代码,因为它不需要显式地定义一个函数,而是直接嵌入到需要它的地方。这样就可以避免因为函数定义重复、命名相似等问题而导致的代码的可读性较差的问题。同时,lambda表达式可以提高代码的执行效率,因为它们能够减少因为创建对象和调用方法带来的额外开销。

二、了解Lambda表达式

1.Lambda的标准格式

在看到方法参数是接口的时候就可以使用Lambda表达式:

语法:( )->{ }

Lambda表达式就是一个匿名函数,而函数相当于java中方法。

语法解析

( ):参数列表,将参数写在括号内;

->:没有实际含义主要用于连接的作用;

{ }:方法体;

有参数的Lambda表达式,直接在()括号内写入即可。

详细要求查看4.使用Lambda表达式的前提条件

2.Lambda的底层原理

匿名内部类在编译的时候会生成一个class文件。

Lambda在程序运行的时候会形成一个类。

              1.在类中会生成一个方法,而这个方法中的方法体就是Lambda表达式中的代码。

              2.还会生成一个匿名内部类,实现接口,重写抽象方法。

              3.在接口的重写方法中还会调用生成的方法。

3.优化Lambda表达式

在lambda的基础上可以使用省略写法

1.小括号内参数类型可以省略不写。

2.如果小括号内有且仅有一个参数,则小括号可以不写。

3.如果大括号内有且仅有一个语句,则同时可以省略大括号、return关键字及语句分号

(int a)->{
    return new Person();
}
//优化
a->  new Person()

4.使用Lambda表达式的前提条件

虽然使用Lambda表达式语法非常简洁,但是lambda不是随随便便用的,使用时有几个条件需要特别注意:

1.方法中的参数或者局部变量的类型必须是接口。

2.接口中有且只有一个抽象方法。

package xw.lambda;
/**
 * @author xw
 *
 */
public class Test01 {
public static void main(String[] args) {
  //方法的参数或者局部变量类型必须为接口才能使用Lambda表达式
  ttt(()->{
  });
  Flyable f=()->{
    System.out.println("这就是Lambda表达式");
  };
}
public static void ttt(Flyable b) {
}
}

三、总结Lambda与匿名内部类的区别

1.所需的类型不一致

匿名内部需要的类型可以是类、抽象类、接口。

lambda表达式需要的接口只能是接口。

2.抽象方法的数量不同

匿名内部类所需接口中的抽象方法的数量随意。

lambda表达式所需接口中的抽象方法有且只有一个。

3.实现方法原理不同

匿名内部类是在编译后形成class。

lambda表达式是程序的运行的时候动态生成class。

当接口中只有一个抽象方法时,建议使用lambda表达式,其他情况还是建议使用匿名方式。

看到这里Lambda表达式的简单介绍就结束了,点个赞再走吧!!

相关文章
|
5天前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
20 3
|
5天前
|
存储 Java 数据处理
Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位
【10月更文挑战第16天】Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位。本文通过快速去重和高效查找两个案例,展示了Set如何简化数据处理流程,提升代码效率。使用HashSet可轻松实现数据去重,而contains方法则提供了快速查找的功能,彰显了Set在处理大量数据时的优势。
15 2
|
7天前
|
存储 算法 Java
Java Set因其“无重复”特性在集合框架中独树一帜
【10月更文挑战第14天】Java Set因其“无重复”特性在集合框架中独树一帜。本文深入解析Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定的数据结构(哈希表、红黑树)确保元素唯一性,并提供最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的`hashCode()`与`equals()`方法。
19 3
|
4天前
|
Java 测试技术 开发者
🌟Java零基础-Lambda运算符详解 🌟
【10月更文挑战第12天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
14 1
|
5天前
|
Java 开发者
在Java集合世界中,Set以其独特的特性脱颖而出,专门应对重复元素
在Java集合世界中,Set以其独特的特性脱颖而出,专门应对重复元素。通过哈希表和红黑树两种模式,Set能够高效地识别并拒绝重复元素的入侵,确保集合的纯净。无论是HashSet还是TreeSet,都能在不同的场景下发挥出色的表现,成为开发者手中的利器。
18 2
|
5天前
|
Java
Java Set以其“不重复”的特性,为我们提供了一个高效、简洁的处理唯一性约束数据的方式。
【10月更文挑战第16天】在Java编程中,Set接口确保集合中没有重复元素,每个元素都是独一无二的。HashSet基于哈希表实现,提供高效的添加、删除和查找操作;TreeSet则基于红黑树实现,不仅去重还能自动排序。通过这两个实现类,我们可以轻松处理需要唯一性约束的数据,提升代码质量和效率。
17 2
|
2月前
|
Java 程序员 API
Java 8新特性之Lambda表达式与Stream API的探索
【9月更文挑战第24天】本文将深入浅出地介绍Java 8中的重要新特性——Lambda表达式和Stream API,通过实例解析其语法、用法及背后的设计哲学。我们将一探究竟,看看这些新特性如何让Java代码变得更加简洁、易读且富有表现力,同时提升程序的性能和开发效率。
|
3月前
|
Java API
Java 8新特性:Lambda表达式与Stream API的深度解析
【7月更文挑战第61天】本文将深入探讨Java 8中的两个重要特性:Lambda表达式和Stream API。我们将首先介绍Lambda表达式的基本概念和语法,然后详细解析Stream API的使用和优势。最后,我们将通过实例代码演示如何结合使用Lambda表达式和Stream API,以提高Java编程的效率和可读性。
|
3月前
|
存储 算法 Oracle
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
63 8
|
3月前
|
Java API
Java8 Lambda 设计和实现问题之在Java 8的Stream API中,parallel=false时collect方法是如何实现的
Java8 Lambda 设计和实现问题之在Java 8的Stream API中,parallel=false时collect方法是如何实现的