• java--Lambda(2)表达式语法


    0 写在前面

    最基本的 Lambda 表达式,它由三部分组成具体格式是这样子的:参数 -> 具体实现;

    Lambda表达式格式:()->{}

    是一段带有输入参数的可执行语句块。
    Lambda 表达式有这么几个特点:
    可选类型声明: 不需要声明参数类型,编译器可以自动识别参数类型和参数值。
    可选的参数圆括号: 一个参数可以不用定义圆括号,但多个参数需要定义圆括号;
    可选的大括号: 如果函数主体只包含一个语句,就不需要使用大括号;
    可选的返回关键字: 如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指明表达式返回了一个数值。

    1 Lambda 表达式的五种形式

    1.1 不包含参数:

    ()->代码块
    
    • 1

    代码实例

    //接口类
    public interface LambdaInterface01 {
        public void lambdaInterface01();
    }
    //测试类
    public class LambdaExample01 implements LambdaInterface01 {
        public static void main(String[] args) {
            LambdaInterface01 example = () ->
                System.out.println("不包含参数,执行啦");
    
            example.lambdaInterface01();
        }
        @Override
        public void lambdaInterface01() {
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    结果截图:
    在这里插入图片描述

    1.2 包含一个参数:

    (一个参数)->代码块
    
    • 1

    我们可以把 () 省略。

    //接口类
    public interface LambdaInterface02 {
        public int lambdaInterface02(int num);
    }
    //测试类
    public class LambdaExample02 implements LambdaInterface02 {
        public static void main(String[] args) {
            LambdaInterface02 example = (int num) ->
                    System.out.println("传入的数据为" + num);
    
    
            example.lambdaInterface02(3);
        }
    
        @Override
        public void lambdaInterface02(int num) {
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    结果截图:
    在这里插入图片描述

    1.3 有多个参数

    (参数1,参数2,……)->代码块
    
    • 1

    使用 () 把参数包裹起来,并用 , 来分割参数。上面的代码表示

    //接口类
    public interface LambdaInterface03 {
        public int lambdaInterface03(int x, int y,int z);
    }
    //测试类
    public class LambdaExample03 implements LambdaInterface03 {
    
        public static void main(String[] args) {
            LambdaInterface03 example = (int x, int y, int z) -> System.out.println("三个数字之和为"+ (x+y+z));
    
            example.lambdaInterface03(10,9,8);
    
        }
    
        @Override
        public void lambdaInterface03(int x, int y, int z) {
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    结果截图:
    在这里插入图片描述

    1.4 表达式主体是不是一个代码块

    带有{},{}里面是代码块

    //接口类
    public interface LambdaInterface04 {
        public void lambdaInterface04(String str);
    }
    //测试类
    public class LambdaExample04 implements LambdaInterface04 {
    
        public static void main(String[] args) {
            LambdaInterface04 example = (String str)->{
                if (str.isEmpty()){
                    System.out.println("字符串为空");
                }
                else {
                    System.out.println("字符串的内容为"+str);
                }
            };
            example.lambdaInterface04("哈喽,我是演示带有代码块的字符串");
        }
        
        @Override
        public void lambdaInterface04(String str) {
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    结果截图:
    在这里插入图片描述

    1.5 不声明参数类型

    参数不被声明类型
    举例:

    ActionListener oneArguments = event -> System.out.println("hello world");
    
    • 1

    2 写在末尾

    Lambda 表达式的基本语法就基本是这样子了,简单记录一下,不仅可以这样写,还可以返回参数什么的,暂时先写这些吧,以后会找时间记录一下的。
    Lambda表示式其实都是为了简化接口实例化的代码。
    灵活使用吧,掌握这些知识可以帮助我们快速的辨别一个 Lambda 表达式,方便的去理解程序的意图。

  • 相关阅读:
    java计算机毕业设计vue水果商城MyBatis+系统+LW文档+源码+调试部署
    MATLAB算法实战应用案例精讲-【图像处理】SLAM技术详解(补充篇)
    详细讲解 —— 多线程(二)Thread类及常见方法(Java EE初阶)
    与HTTP相关的各种协议
    C++中的类模板(黑马程序员)
    Thread线程的使用
    ISO 32000-2 国际标准7.7
    React函数式写法和类式写法的区别(以一个计数器功能为例子)
    介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
    3、CubeMx FreeRTOS笔记
  • 原文地址:https://blog.csdn.net/weixin_45909221/article/details/127973058