Lambda表达式

简介: 一.在学习Lambda之前,我们先来看一段代码:1.代码前言①我们首先定义一个Cook接口,里面有一个makeFood()方法②又定义了一个测试类,其中的invokeCook方法内部调用Cook接口的makeFood方法,最后使用匿名类去重写makeFood方法,2.代码(不想看代码的可直接跳过,看第二条的总结说明)

Lambda表达式



一.在学习Lambda之前,我们先来看一段代码:


1.代码前言


①我们首先定义一个Cook接口,里面有一个makeFood()方法


②又定义了一个测试类,其中的invokeCook方法内部调用Cook接口的makeFood方法,

最后使用匿名类去重写makeFood方法,


2.代码(不想看代码的可直接跳过,看第二条的总结说明)


public interface Cook {
//    定义无参数无返回值的方法makeFood
    public abstract void makeFood();
}
public class Demo01Cook {
    public static void main(String[] args) {
        invokeCook(new Cook() {
            @Override
            public void makeFood() {
                System.out.println("可以吃饭了");
            }
        });
    //    定义一个方法,参数传递Cook接口,方法内部调用Cook接口中的方法makeFood
    public static void invokeCook(Cook cook) {
        cook.makeFood();
    }
}


二.当我们看完上述代码后,我们会感到这段代码很复杂,但其实只是为了重写Cook接口的makeCook方法,输出“我要吃饭了”,其实使用Lambda可以简化代码


1.使用Lambda去实现上述代码


public class Demo01Cook {
    public static void main(String[] args) {
      //        使用Lambda表达式,简化匿名内部类的书写
        invokeCook(() -> {
                    System.out.println("又吃饭了");
                });
    }
    public static void invokeCook(Cook cook) {
        cook.makeFood();
    }
}


2.在学习lambda之前,我们先来了解两个概念:


(1)面向对象的思想:做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情


(2)函数式编程思想:只要能获取到结果,谁去做的都不重要,重视的是结果,不重视过程。Lambda表达式就是函数式编程思想的很好体现。


三.看完Lambda的书写,会感到很简单,下面我们来了解Lambda的书写规范


1.Lambda表达式的标准格式:


由三部分组成:


a.一些参数


b.一个箭头


c.一段代码


格式:


(参数列表) -> { 一些重写方法的代码 };

解释说明格式:


():接口中抽象方法的参数列表,没有参数,就空着;有参数就写出参数,多个参数使用逗号隔开


->:传递的意思,把参数传递给方法体{ }


{ }:重写接口的抽象方法的方法体


2.Lambda实例(上面是无参数,接下来演示是一个有参数的接口)


public interface Calculate {
//    定义一个计算两个int整数和的方法并返回
    public abstract int calc(int a,int b);
}
public class Demo01Calculator {
    public static void main(String[] args) {
//        使用Lambda表达式简化匿名内部类的书写
        invokeCalc(20,30,(int a,int b) ->{
            return a+b;
        });
    }
    public static void invokeCalc(int a, int b, Calculate c) {
        int sum = c.calc(a, b);
        System.out.println(sum);
    }
}


3.Lambda表达式是可推导(凡是根据推导出来的内容,都可以省略书写)


可以省略的内容:


1).(参数列表):括号中参数列表的数据类型,可以省略不写


2).(参数列表):括号中的参数如果只有一个,那么类型和()都可以省略


3).{一些代码}:如果{ }中的代码只有一行,无论是否有返回值,都可以省略({ },return,分号)


注意:第三条要省略时:{ },return,分号必须一起省略



目录
相关文章
|
3月前
|
算法 编译器 C++
【C++11】lambda表达式
C++11 引入了 Lambda 表达式,这是一种定义匿名函数的方式,极大提升了代码的简洁性和可维护性。本文详细介绍了 Lambda 表达式的语法、捕获机制及应用场景,包括在标准算法、排序和事件回调中的使用,以及高级特性如捕获 `this` 指针和可变 Lambda 表达式。通过这些内容,读者可以全面掌握 Lambda 表达式,提升 C++ 编程技能。
159 3
|
8月前
|
算法 编译器 C++
C++一分钟之—Lambda表达式初探
【6月更文挑战第22天】C++的Lambda表达式是匿名函数的快捷方式,增强函数式编程能力。基本语法:`[capture](params) -> ret_type { body }`。例如,简单的加法lambda:`[](int a, int b) { return a + b; }`。Lambda可用于捕获外部变量(值/引用),作为函数参数,如在`std::sort`中定制比较。注意点包括正确使用捕获列表、`mutable`关键字和返回类型推导。通过实践和理解这些概念,可以写出更简洁高效的C++代码。
75 13
|
8月前
|
C++
C++ lambda表达式
C++ lambda表达式
|
9月前
|
Java 编译器
Lambda表达式
Lambda表达式
45 0
|
编译器 C++
【C++】Lambda表达式的使用
【C++】Lambda表达式的使用
124 0
|
9月前
|
算法 编译器 C++
C++中的lambda表达式
C++中的lambda表达式
44 0
|
9月前
|
编译器 C++
C++lambda表达式
C++lambda表达式
|
存储 编译器 C++
c++ lambda表达式
c++ lambda表达式
94 0
|
Java
Lambda表达式的实际情况和应用
Lambda表达式是Java 8引入的一个重要特性,它提供了一种简洁而强大的方式来表示匿名函数。Lambda表达式可以用于各种情况和应用,包括但不限于以下几个方面:
87 0
|
存储 算法 编译器
lambda表达式的介绍
lambda表达式的介绍
126 0