首页 > 编程语言 >Java lambda表达式

Java lambda表达式

时间:2024-09-28 15:20:58浏览次数:11  
标签:省略 接口 匿名 Java lambda public 表达式 Lambda

概述:

今天推荐一篇!Java1.8的新特性之lambda表达式,它非常的方便,可以用来简化匿名内部类哦。能够以更清晰、直观的方式表达代码的逻辑。极大的简化了代码的数量。⌨️⌨️⌨️

不会匿名内部类的小伙伴可以博主下面这篇文章哦:

Java匿名内部类icon-default.png?t=O83Ahttps://blog.csdn.net/ouhexie/article/details/142615823?spm=1001.2014.3001.5501

函数式编程

函数式编程(Functional programming)是一种思想特点。

函数式编程思想,忽略面向对象的复杂语法,强调做什么,而不是谁去做。

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

Lambda表达式的标准格式

Lambda表达式是JDK 8开始后的一种新语法形式

使用前提

必须是接口的匿名内部类,如果是接口那只能有一个抽象方法

格式:
([参数列表]) ->{
​
}
  • ([参数列表]):对应着方法的形参

  • ->:固定格式

  • {}:对应着方法的方法体

代码案例:
public class LambdaDemo {
    public static void main(String[] args) {
        //1.利用匿名内部类的形式去调用下面的方法
        //调用一个方法的时候,如果方法的形参是一个接口,那么我们要传递这个接口的实现类对象
        //如果实现类对象只要用到一次,就可以用匿名内部类的形式进行书写
        method(new Swim() {
            @Override
            public void swimming() {
                System.out.println("正在游泳~~~");
            }
        });
​
        //2.利用lambda表达式进行改写
        method(() -> {
            System.out.println("正在游泳~~~");
        });
    }
​
    /**
     * 调用游泳接口实现类的swimming方法
     *
     * @param s 游泳接口实现类
     */
    public static void method(Swim s) {
        s.swimming();
    }
}
​
/**
 * 游泳接口
 */
interface Swim {
    public abstract void swimming();
}
注意点
  • Lambda表达式可以用来简化匿名内部类的书写

  • Lambda表达式只能简化函数式接口的匿名内部类的写法

  • 函数式接口:有且只有一个抽象方法的接口叫做函数式接口,接口上方可以加@FunctionalInterface注解

Lambda的好处

Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使Java语言表达能力得到了提升。

Lambda表达式的省略写法

省略核心:

可推导,可省略

lambda的省略规则:
  1. 参数类型可以省略不写。

  2. 如果只有一个参数,参数类型可以省略,同时()也可以省略。

  3. 如果Lambda表达式的方法体只有一行,大括号、分号、return可以省略不写,需要同时省略。

代码案例:
public class LambdaDemoOmit {
    public static void main(String[] args) {
        //初识lambda表达式
        Integer[] arr = {2, 3, 1, 5, 6, 7, 8, 4, 9};
​
        Arrays.sort(arr, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });
​
        //lambda完整格式
        Arrays.sort(arr, (Integer o1, Integer o2) -> {
            return o1 - o2;
        });
​
        //lambda省略写法
        Arrays.sort(arr, (o1, o2) -> o1 - o2);
​
        System.out.println(Arrays.toString(arr));
    }
}

欧了,到这里我应该解释的差不多啦,我是南极,大胆做自己,活出精彩的人生

标签:省略,接口,匿名,Java,lambda,public,表达式,Lambda
From: https://blog.csdn.net/ouhexie/article/details/142616137

相关文章

  • 2024java社招面试(亲身经历8w字,更新中)
    一、Java基础部分面试题1.Java面向对象的三个特征封装:对象只需要选择性的对外公开一些属性和行为。继承:子对象可以继承父对象的属性和行为,并且可以在其之上进行修改以适合更特殊的场景需求。多态:允许不同类的对象对同一消息做出响应。2.Java中基本的数据类型有哪些以......
  • 最详细JAVA八股文,欢迎收藏
    1、java内存模型JMM    JMM是一个抽象的规范,它定义了共享内存中多线程程序读写规范,即变量如何存储在内存中又如何从内存中读取(这里的变量指实例字段,静态变量,构成数组的元素)JMM将内存分为主内存和工作内存主内存是线程共享的公共区域,里面存储了共享变量工作内存是线......
  • 全网最新Java面试八股文题
    1、ThreadPoolExecutor对象有哪些参数怎么设定核心线程数和最大线程数拒绝策略有哪些  难度系数:⭐corePoolSize:核心线程池的大小maximumPoolSize:线程池能创建线程的最大个数keepAliveTime:空闲线程存活时间unit:时间单位,为keepAliveTime指定时间单位workQueue:阻塞队......
  • java毕业设计-基于springboot+vue的茶文化社区与交易平台小程序设计和实现,基于springb
    博主介绍:✌️码农一枚,专注于大学生项目实战开发、讲解和毕业......
  • java毕业设计-基于springboot+vue的大学生社团信息化管理平台设计和实现,基于springboo
    博主介绍:✌️码农一枚,专注于大学生项目实战开发、讲解和毕业......
  • 【Java计算机毕业设计】基于ssm的农家乐预约系统
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • 【25届毕设选题推荐】基于Java的农产品研究报告管理系统的设计与实现
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • MindFusion Pack for Java Swing 2024.R1 Crack
    MindFusionPackforJavaSwingJavaDiagramDiagrammingJavaSwingSchedulerSchedulingJavaSwingSpreadsheetSpreadsheetJavaSwingChartCharts&GaugesJavaSwingVirtualKeyboardVirtualKeyboardDiagramsIfyourJavaapplicationneedstodrawaflow......
  • java计算机毕业设计青少年编程在线考试系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,编程能力已成为衡量青少年综合素质的重要指标之一。在全球化竞争日益激烈的今天,掌握编程技能不仅能够提升学生的逻辑思维、问......
  • java计算机毕业设计网络游戏虚拟交易平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着网络技术的飞速发展与普及,网络游戏已成为全球范围内广受欢迎的休闲娱乐方式之一。这一趋势不仅催生了庞大的玩家群体,也孕育了繁荣的虚拟经济体系......