java之Lambda语法简介

本文详细介绍了Java 8的Lambda表达式,包括其语法形式、特性及各种示例,展示了如何通过Lambda简化代码,实现接口的匿名实现。Lambda表达式支持可选类型声明、参数括号、大括号以及返回关键字,允许一条语句省略return和大括号,并能由编译器推断数据类型。
摘要由CSDN通过智能技术生成

目录

语法形式

特性

示例

1.没有传参

2.一个传参

3.两个传参(多个传参同理)

4.指定返回类型

5.一条语句,可以省略return和大括号

6.数据类型可以省略,编译器可以推断出类型

完整实例


Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。可以取代大部分的匿名内部类。作为一种进奏的代码风格,可以写出更简洁灵活的代码。
个人的理解,Lambda表达式是对应接口的一种匿名实现。

语法形式

语法形式为 () -> {}
Lambda操作符为“->”,该操作符被称为Lambda操作符或箭头操作符。它将Lambda分为两部分:
左侧():表达式所需参数
右侧{}:需要执行功能的代码块

特性

  1. 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
  2. 可选的参数圆括号:一个参数无需定义圆括号,但多个参数要定义圆括号。
  3. 可选的大括号:如果主题包含了一个语句,就不需要使用大括号。
  4. 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指明表达式返回一个数值。

示例

为了更为直观,先定义几个接口

1.没有传参

public interface LambdaInterface1 {
    public void test();
}

对应lambda表达式为:

 LambdaInterface1 lambdaInterface1 = () -> {
        System.out.println("no params: ");
    };

2.一个传参

public interface LambdaInterface2 {
    public void test(int x);
}

对应lambda表达式:

 LambdaInterface2 lambdaInterface2 = (a) -> {
        System.out.println("one params: "+a);
    };

也可以省略括号,如:

LambdaInterface2 lambdaInterface2NoBrace = a -> {
        System.out.println("one params NoBrace: "+a);
    };

3.两个传参(多个传参同理)

public interface LambdaInterface3 {
    public void test(int x,int y);
}

对应lambda表达式:

LambdaInterface3 lambdaInterface3 = (a,b) -> {
        System.out.println("two params; "+(a + b));
    };

4.指定返回类型

public interface LambdaInterface4 {
    public int test(int x, int y);
}

对应lambda表达式:

LambdaInterface4 lambdaInterface4 = (a,b) -> {
        System.out.println("specify the type; "+(a + b));
        return a+b;
    };

5.一条语句,可以省略return和大括号

如果只有一条语句的时候,return和大括号都可以省略,如:

LambdaInterface4 lambdaInterface4NoBrace = (a,b) ->a + b;

6.数据类型可以省略,编译器可以推断出类型

以上实例,都没有指定类型。但是编译器可以根据传入参数,自动推断出类型是int型。如:

1.LambdaInterface3 lambdaInterface3 = (a,b) -> {
        System.out.println("two params; "+(a + b));
    };

2.LambdaInterface4 lambdaInterface4NoBrace = (a,b) ->a + b;

完整实例

如下:

public class LambdaTester {
    public static void main(String[] args){
        lambdaInterface1.test();
        lambdaInterface2.test(2);
        lambdaInterface3.test(3,5);
        lambdaInterface4.test(4,6);
        lambdaInterface2NoBrace.test(4);
    }
   static LambdaInterface1 lambdaInterface1 = () -> {
        System.out.println("no params: ");
    };
    static LambdaInterface2 lambdaInterface2 = (a) -> {
        System.out.println("one params: "+a);
    };

    static LambdaInterface2 lambdaInterface2NoBrace = a -> {
        System.out.println("one params NoBrace: "+a);
    };

    static LambdaInterface3 lambdaInterface3 = (a,b) -> {
        System.out.println("two params; "+(a + b));
    };

    static LambdaInterface4 lambdaInterface4 = (a,b) -> {
        System.out.println("specify the type; "+(a + b));
        return a+b;
    };
    static LambdaInterface4 lambdaInterface4NoBrace = (a,b) ->a + b;
}

运行结果:

no params: 
one params: 2
two params; 8
specify the type; 10
one params NoBrace: 4

参考文档
https://www.cnblogs.com/drl-blogs/p/10803013.html
https://www.runoob.com/java/java8-lambda-expressions.html
https://www.cnblogs.com/haixiang/p/11029639.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值