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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 什么是gan网络_DAN网络

    什么是gan网络_DAN网络引言GAN,全称GenerativeAdversarialNetworks,中文叫生成式对抗网络,了解GAN,私下我喜欢叫它为“内卷”网络,为啥这么说,我们先来看一个故事!!!01警察与小偷的故事在宇宙的某个星球,某个地方有一个城市,这个城市是一个新兴城市,各种制度建设还不完善,所以城市的治安很混乱,很快,这个城市就出现了很多小偷。当然,现在这批小偷能力层次不齐,有的是盗窃高手,有的是一个毫无技术的小憨憨。小偷盛行,市民投诉反馈,这个城市就开始整治…

    2025年6月27日
    3
  • 模拟对讲机和数字对讲机_对讲机行业现状

    模拟对讲机和数字对讲机_对讲机行业现状【对讲机的那点事】刷爆对讲机行业朋友圈的MC8618模块你了解吗?

    2022年4月20日
    51
  • 惠普笔记本连接不了无线网_惠普电脑连接不了无线网

    惠普笔记本连接不了无线网_惠普电脑连接不了无线网关于惠普电脑连不上无线网的问题,一些网友不太清楚该怎么办,那么下面就由学习啦小编来给你们说说惠普电脑连不上无线网的解决方法吧,希望可以帮到你们哦!惠普电脑连不上无线网的解决方法一:电脑连不上wifi,图标会有黄色叹号(我的连上所以没有),在右下角右键点击无线wifi图标,再点击打开网络和共享中心。在网络和共享中心里面点击左上角的更改适配器设置。进去以后一般可以看到3个连接,一个是蓝牙的,一个是有线…

    2022年8月13日
    6
  • Java教程,全套Java基础视频教程「建议收藏」

    Java教程,全套Java基础视频教程「建议收藏」深知广大爱好Java的人学习是多么困难,没视频没资源,上网花钱还老被骗。为此我呕心沥血整理了这套Java教程,不管你是不懂电脑的小白,还是已经步入开发的大牛,这套路线路你都值得拥有,小白看上面的视频可以成功学会Java并且顺利工作,大神看了上面的资源肯定会谆谆乐道,教程的宗旨就是分享,专业,便利,让喜爱Java的人,都能平等的学习。首先建立好开发环境非常重要,工欲善其事,必先利其器。做任何开发…

    2022年6月9日
    43
  • C++:string 截取字符串

    C++:string 截取字符串stringstr=”123abc456″;inti=3;1取字符串的前i个字符str=str.Substring(0,i);//orstr=str.Remove(i,str.Length-i);2去掉字符串的前i个字符:str=str.Remove(0,i);//orstr=str.Substring(i);3从右边开始取…

    2022年5月20日
    42
  • HTML实用的网页代码大全[通俗易懂]

    HTML实用的网页代码大全[通俗易懂]【一】:符号&lt;p&gt;段落&lt;/p&gt; &lt;h&gt;标题&lt;/h&gt;(h1—h6) &lt;br&gt;:换行 &lt;hr&gt;:分割线 左右尖括号:&amp;lt;&amp;gt; &amp;表示为:&amp;amp "表示为:&amp;quot; 表格形式&lt;table&gt;

    2022年6月3日
    65

发表回复

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

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