Java lambda表达式

概述:

今天推荐一篇!Java1.8的新特性之lambda表达式,它非常的方便,可以用来简化匿名内部类哦。能够以更清晰、直观的方式表达代码的逻辑。极大的简化了代码的数量。⌨️⌨️⌨️

不会匿名内部类的小伙伴可以博主下面这篇文章哦:

Java匿名内部类icon-default.png?t=O83Ahttps://blog.csdn.net/ouhexie/article/details/142615823?spm=1001.2014.3001.5501

函数式编程

函数式编程(Functional programming)是一种思想特点。

函数式编程思想,忽略面向对象的复杂语法,强调做什么,而不是谁去做。

而我们要学习的Lambda表达式就是函数式思想的体现。

Lambda表达式的标准格式

Lambda表达式是JDK 8开始后的一种新语法形式

使用前提

必须是接口的匿名内部类,如果是接口那只能有一个抽象方法

格式:
([参数列表]) ->{
​
}
  • ([参数列表]):对应着方法的形参

  • ->:固定格式

  • {}:对应着方法的方法体

代码案例:
public class LambdaDemo {
    public static void main(String[] args) {
        //1.利用匿名内部类的形式去调用下面的方法
        //调用一个方法的时候,如果方法的形参是一个接口,那么我们要传递这个接口的实现类对象
        //如果实现类对象只要用到一次,就可以用匿名内部类的形式进行书写
        method(new Swim() {
            @Override
            public void swimming() {
                System.out.println("正在游泳~~~");
            }
        });
​
        //2.利用lambda表达式进行改写
        method(() -> {
            System.out.println("正在游泳~~~");
        });
    }
​
    /**
     * 调用游泳接口实现类的swimming方法
     *
     * @param s 游泳接口实现类
     */
    public static void method(Swim s) {
        s.swimming();
    }
}
​
/**
 * 游泳接口
 */
interface Swim {
    public abstract void swimming();
}
注意点
  • Lambda表达式可以用来简化匿名内部类的书写

  • Lambda表达式只能简化函数式接口的匿名内部类的写法

  • 函数式接口:有且只有一个抽象方法的接口叫做函数式接口,接口上方可以加@FunctionalInterface注解

Lambda的好处

Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使Java语言表达能力得到了提升。

Lambda表达式的省略写法

省略核心:

可推导,可省略

lambda的省略规则:
  1. 参数类型可以省略不写。

  2. 如果只有一个参数,参数类型可以省略,同时()也可以省略。

  3. 如果Lambda表达式的方法体只有一行,大括号、分号、return可以省略不写,需要同时省略。

代码案例:
public class LambdaDemoOmit {
    public static void main(String[] args) {
        //初识lambda表达式
        Integer[] arr = {2, 3, 1, 5, 6, 7, 8, 4, 9};
​
        Arrays.sort(arr, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });
​
        //lambda完整格式
        Arrays.sort(arr, (Integer o1, Integer o2) -> {
            return o1 - o2;
        });
​
        //lambda省略写法
        Arrays.sort(arr, (o1, o2) -> o1 - o2);
​
        System.out.println(Arrays.toString(arr));
    }
}

欧了,到这里我应该解释的差不多啦,我是南极,大胆做自己,活出精彩的人生👊👊👊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值