Lambda表达式

一、Lambda表达式的概念

在Java8语言中引入了Lambda表达式,基于操作符" -> "实现,该操作符被称为Lambda操作符或箭头操作符;

Lambda表达式左侧:指定了Lambda表达式需要的参数列表,对应接口的抽象方法的形参列表;
Lambda表达式右侧:指定了Lambda体,即Lambda表达式要执行的功能,对应接口的抽象方法的实现逻辑;

Lambda表达式本身是一个匿名方法(匿名函数),通常用于实现接口的抽象方法,然后直接赋值给接口变量,它可以使代码形式更简洁、更灵活;

/**************************************
 * 				样例1
 *************************************/
/// 常规表达
Runnable runnable1 = new Runnable() {
    @Override
    public void run() {
        System.out.println("Lambda");
    }
};
new Thread(runnable1).start();

/// Lambda表达式:匿名方法 -> 接口实例
Runnable runnable2 = () -> System.out.println("Lambda");
new Thread(runnable2).start();

/// Lambda表达式:匿名方法 -> 匿名实例
new Thread(() -> System.out.println("Lambda")).start();

/**************************************
 * 				样例2
 *************************************/
/// 常规表达
Comparator<Integer> com1 = new Comparator<Integer>() {
    @Override
    public int compare(Integer num1, Integer num2) {
        return Integer.compare(num1, num2);
    }
};
int result1 = com1.compare(99, 100);
System.out.println(result1);

/// Lambda表达式:匿名方法 -> 接口实例
Comparator<Integer> com2 = (num1, num2) -> Integer.compare(num1, num2);
int result2 = com2.compare(99, 100);
System.out.println(result2);

二、Lambda表达式的使用

1、Lambda无参数,无返回值

@Test
public void test() {
    new Thread(() -> System.out.println("Lambda")).start();
}

2、Lambda有参数,无返回值

3、Lambda参数类型可以省略,因为编译器可以“类型推断”

@Test
public void test() {
    Consumer<String> consumer = (s) -> System.out.println(s);
    consumer.accept("Lambda");
}

4、Lambda一个参数时,其外面的小括号可以省略

5、 Lambda需要多个参数,多条语句,有返回值

@Test
public void test() {
    Comparator<Integer> comparator = (num1, num2) -> {
        ......
        return num1.compareTo(num2);
    };

    System.out.println(comparator.compare(100, 99)); //100  99  1
}

6、Lambda体只有一条语句时,return 与大括号都可省略

@Test
public void test() {
    Comparator<Integer> comparator = ((num1, num2) -> num1.compareTo(num2));
    System.out.println(comparator.compare(99, 100)); //1

    Consumer<String> consumer = s -> System.out.println(s);
    consumer.accept("Lambda"); //Lambda
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值