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

简介: 最基本的 Lambda 表达式,它由三部分组成具体格式是这样子的:参数 -> 具体实现;Lambda表达式格式:()->{}是一段带有输入参数的可执行语句块。可选类型声明: 不需要声明参数类型,编译器可以自动识别参数类型和参数值。可选的参数圆括号: 一个参数可以不用定义圆括号,但多个参数需要定义圆括号;可选的大括号: 如果函数主体只包含一个语句,就不需要使用大括号;可选的返回关键字: 如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指明表达式返回了一个数值。

@[TOC]

0 写在前面

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

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

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

1 Lambda 表达式的五种形式

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 包含一个参数:

(一个参数)->代码块

我们可以把 () 省略。

//接口类
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.3 有多个参数

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

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

//接口类
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.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.5 不声明参数类型

参数不被声明类型
举例:

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

2 写在末尾

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

相关文章
|
6天前
|
缓存 前端开发 Java
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
【8月更文挑战第10天】java基础巩固,工具类的封装
11 1
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
|
8天前
|
存储 前端开发 JavaScript
【前端学JAVA】有手就会!10min快速入门java的基础语法(2)
【8月更文挑战第8天】10min快速入门java的基础语法
21 2
【前端学JAVA】有手就会!10min快速入门java的基础语法(2)
|
3天前
|
Java 开发者
Java中的Lambda表达式:简化你的代码之旅
【8月更文挑战第17天】 在编程的海洋中,简洁是航行的风帆。Lambda表达式,作为Java 8的一大亮点,为开发者提供了一种更为紧凑、易读的编码方式。本篇文章将带你领略Lambda表达式的魅力,从基础概念到实际应用,让你的代码像诗句一样流畅。
17 4
|
12天前
|
存储 算法 Oracle
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
39 8
|
8天前
|
Java API
Java语法Java语法
【8月更文挑战第12天】Java语法
22 3
|
12天前
|
Java 关系型数据库 程序员
11 Java接口(语法、规范、微观&宏观接口)
11 Java接口(语法、规范、微观&宏观接口)
32 6
|
8天前
|
并行计算 Java 程序员
探索Java中的Lambda表达式
在Java 8中,引入了Lambda表达式,这一特性极大地简化了代码,提高了开发效率。本文将通过浅显易懂的语言和生动的比喻,带你一步步了解Lambda表达式的魅力所在,从基础语法到实际应用,让你轻松掌握这一强大的工具。
20 1
|
12天前
|
存储 Java
02 Java基础语法(变量+数据类型+运算符)(下)
02 Java基础语法(变量+数据类型+运算符)
16 5
|
12天前
|
存储 Java
02 Java基础语法(变量+数据类型+运算符)(上)
02 Java基础语法(变量+数据类型+运算符)
30 4
|
1天前
|
Java 程序员
"Java程序员必备秘籍:Lambda表达式如何让你的代码瘦身90%?揭秘简化编程的终极奥秘!"
【8月更文挑战第19天】Java持续进化,Lambda表达式自Java 8起赋予其新活力。它简化代码,使编程更愉悦。以前,简单功能需冗长代码,如列表排序要用匿名内部类实现`Comparator`。现在一行Lambda足矣。Lambda如`(参数) -> {表达式}`,支持零或多参数。