Lambda表达式

Lambda表达式

一、简介

Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。

Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

使用 Lambda 表达式可以使代码变的更加简洁紧凑。

二、表示形式

(parameters) -> expression 或 (parameters) ->{ statements; }

多个语句使用{}括起来

方法( (形参 )-> {

​ 语句1;

​ 语句2;

} );

2.1无参数

可以明显看出,Lamda表达式比匿名内部类的写法简单许多。(只需要编写核心语句)

public interface MyInterface {
    /**
     * 测试方法1
     */
    //public void test();

    /**
     * 测试方法2
     * @param a
     * @param b
     * @return
     */
    public int getSum(int a,int b);
}

/**
 * @Author: 郜宇博
 * @Date: 2021/8/31 17:07
 * lamda联系
 */
public class LamdaExpressionTest {
    public static void main(String[] args) {
        //方法一:
        mainTest(new MyInterfece() {
            @Override
            public void test() {
                System.out.println("匿名内部类实现");
            }
        });
       //方法二:Lambda表达式
        mainTest( ()->{
            System.out.println("lambda语句1");
            System.out.println("lambda语句2");
        });
    }
    public static void mainTest(MyInterfece myInterfece){
        myInterfece.test();
    }

}

2.2有参数

public class LambdaExpressionTest {
    public static void main(String[] args) {
        //方法一:匿名内部类
        getSum(new MyInterface() {
            @Override
            public int getSum(int a, int b) {
                return a+b;
            }
        },2,3);

        //方法二:lambda表达式
        getSum( (int a,int b)-> {return a+b;},2,3);
    }
    public static void getSum(MyInterface myInterface , int a, int b){
        int res = myInterface.getSum(a,b);
        System.out.println(res);
    }

}

三、使用

3.1使用外部参数

/**
 * @Author: 郜宇博
 * @Date: 2021/8/31 17:07
 * lamda联系
 */
public class LambdaExpressionTest {
    public static void main(String[] args) {
        int num = 10;
        MyInterface myInterface = (int a,int b)->a+b+num;
        int sum = myInterface.getSum(2, 3);
        System.out.println(sum);

    }
    public static void getSum(MyInterface myInterface , int a, int b){
        int res = myInterface.getSum(a,b);
        System.out.println(res);
    }
}

3.2实现线程类的Runable方法

public class LambdaExpressionTest {
    public static void main(String[] args) {
        new Thread(()-> System.out.println("实现线程的run方法")).start();

    }
}

四、注意

  1. 可以直接在 lambda 表达式中访问外层的局部变量:

    <span>Lambda表达式</span>

  2. lambda 表达式的局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义)

  3. 不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误(也说明了lambda表达式使用的外部变量为final修饰的)

<span>Lambda表达式</span>

  1. 在 Lambda 表达式当中不允许声明一个与局部变量同名的参数或者局部变量。

<span>Lambda表达式</span>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115174.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 开源 微商分销系统 php,[PHP程序] 微商新零售分销平台源码Thinkphp内核 产品营销推广神器…

    开源 微商分销系统 php,[PHP程序] 微商新零售分销平台源码Thinkphp内核 产品营销推广神器…源码介绍一个新零售的派单工具,有了平台,会让客户主动加你买货,100%成交,还会积极帮你转介绍,让你不仅仅获得派单,还能建立自己的商友圈,积累强大的人脉。平台的机制中一共分为13个商友星级,从一星到十三星,每升一星就会获得大量的平台派单,升到13星一共可获得百万笔零售订单。平台没有行业限制,无论你是微商,电商还是实体,无论你是卖衣服、化妆品还是食品,都可以使用平台。同行可以合作,异业可以联盟,不用…

    2022年5月17日
  • 头歌MySQL数据库实训答案 有目录[通俗易懂]

    头歌MySQL数据库实训答案 有目录[通俗易懂]计算机系统综合实训头歌MySQL数据库实训平台作业,内容比较全比较多,内容仅供参考,如有错误部分希望联系我跟正,觉得有用记得点赞收藏。数据库1-MySQL数据定义与操作实战数据库2-MySQL数据管理技术实战数据库3-MySQL数据库系统设计实战数据库4-层次、网状、关系模型实战

    2022年6月26日
  • 关于Set集合去重[通俗易懂]

    关于Set集合去重[通俗易懂]上次说了List集合的去重,这次来说说Set集合的去重publicstaticvoidmain(String[]args){ HashSeths=newHashSet<>(); hs.add(“a”); hs.add(“b”); hs.add(“c”); hs.add(“a”); hs.add(“a”); for(Objectobj:…

    2022年6月7日
  • 将vue项目打包成移动端app(app打包教程)

    Vue项目打包成移动端APP需要准备的工具:Hbuilder目录Vue项目打包成移动端APP首先打包vue到dist目录然后再Hbuilder中打开dist目录然后将dist包含的web项目转换为移动APP项目前几步配置完成后,就可以在手机上进行真机调试了真机测试没有问题,就可以进行下一步—》打包apk了最后将apk安装包安装到手机上就可以正常使用了…

    2022年4月10日
  • 调查发现女人比男人更喜欢使用社交网站(组图)

    调查发现女人比男人更喜欢使用社交网站(组图)男人更喜欢语音/电话交流女人比男人更喜欢使用社交网站  北京时间9月25日上午消息,根据市场研究机构Rebtel发布的最新调查结果,女人更喜欢通过社交网站与家人、朋友及同事联系,而男人更喜欢用电话与家人、朋友及同事联系。  Rebtel在今年5月17日至19日对美国2361名18岁以上成年人进行了这项调查,旨在揭示一个问题,即一旦美国成年人只能使用一种通讯…

    2022年7月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号