Lamda表达式详解

Lamda表达式详解Lamda表达式1、λ希腊字母表中排序第十一位的字母,英语名称为Lamda2、避免匿名内部类定义过多3、可以让你的代码看起来很简洁4、去掉了一堆没有意义的代码,留下核心的逻辑3、其实质属于函数式编程的概念(params)->expression[表达式](params)->statement[语句](params)->{statements}a->System.out.println(“ilikelamda–>”+a)newTh

大家好,又见面了,我是你们的朋友全栈君。

Lamda表达式

在这里插入图片描述

1、λ 希腊字母表中排序第十一位的字母,英语名称为 Lamda
2、避免匿名内部类定义过多
3、可以让你的代码看起来很简洁
4、去掉了一堆没有意义的代码,留下核心的逻辑
3、其实质属于函数式编程的概念

(params)-> expression[表达式]
(params) -> statement[语句]
(params) -> {statements}

a -> System.out.println("i like lamda-->"+a)

new Thread (()->System.out.println(“多线程学习。。。。”)).start();

怎么理解

1、理解Functional interface(函数式接口)是学习java8 lamda表达式的关键所在。

2、函数式接口的定义:

  • 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
public interface Runnable{ 
   
	public abstract void run();
}
  • 对于函数式接口,我们可以通过lamda表达式来创建该接口的对象

代码推导λ表达式

package com.haiyang.lamda;

public class TestLamda01 { 
   

    //3、静态内部类,同样实现ILike接口
    static class Like2 implements ILike{ 
   
        @Override
        public void lamda() { 
   
            System.out.println("i like lamda2");
        }
    }

    public static void main(String[] args) { 
   
        ILike like = new Like();
        like.lamda();
        like = new Like2();
        like.lamda();

        //4、局部内部类
        class Like3 implements ILike{ 
   
            @Override
            public void lamda() { 
   
                System.out.println("i like lamda3");
            }
        }
        like = new Like3();
        like.lamda();

        //5、匿名内部类,没有类的名称。必须借助接口或者父类
        like = new ILike() { 
   
            @Override
            public void lamda() { 
   
                System.out.println("i like lamda4");
            }
        };
        like.lamda();

        //6、lamda表达式
        like = ()->{ 
   
            System.out.println("i like lamda5");
        };
        like.lamda();
    }
}


//1、定义一个只有一个抽象方法的接口
interface ILike{ 
   
    abstract void lamda();
}

//2、实现类
class Like implements ILike{ 
   

    @Override
    public void lamda() { 
   
        System.out.println("i like lamda1");
    }
}

输出:
在这里插入图片描述

带一个参数的Lamda简化

package com.haiyang.lamda;

public class TestLamda02 { 
   

    public static void main(String[] args) { 
   
        ILive live = null;

        //Lamda简化
        live = (int a)->{ 
   
            System.out.println("I live you"+a);
        };
        live.live(1);

        //Lamda简化参数类型
        live = (a)->{ 
   
            System.out.println("I live you"+a);
        };
        live.live(2);

        //Lamda简化括号
        live = a->{ 
   
            System.out.println("I live you"+a);
        };
        live.live(3);

        //Lamda简化花括号(只有一条语句时)
        live = a->System.out.println("I live you"+a);
        live.live(4);
    }

}

interface ILive{ 
   
    abstract void live(int a);
}

输出:
在这里插入图片描述

带多个参数的Lamda简化


package com.haiyang.lamda;

public class TestLamda02 { 
   

    public static void main(String[] args) { 
   
        ILive live = null;

        //Lamda简化
        live = (int a,int b)->{ 
   
            System.out.println("I live you"+a+b);
        };
        live.live(1,1);

        //Lamda简化参数类型(要去掉就要都去掉)
        live = (a,b)->{ 
   
            System.out.println("I live you"+a+b);
        };
        live.live(2,2);


        //Lamda简化花括号(只有一个语句时)
        live = (a,b)->System.out.println("I live you"+a+b);
        live.live(3,3);
    }

}

interface ILive{ 
   
    abstract void live(int a,int b);
}

输出:
在这里插入图片描述

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

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

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


相关推荐

  • css属性margin是什么意思_css中position的属性

    css属性margin是什么意思_css中position的属性深入理解css中的margin属性之前我一直认为margin属性是一个非常简单的属性,但是最近做项目时遇到了一些问题,才发现margin属性还是有一些“坑”的,下面我会介绍margin的基本知识以及

    2022年8月1日
    1
  • idea全局搜索快捷键修改_idea整个项目替换

    idea全局搜索快捷键修改_idea整个项目替换默认是:Ctrl+Shift+R如果不是继续看下面:不是可能是你不是使用的idea默认的快捷键,或者之前更改过快捷键,打开Setting(Ctrl+Alt+S)——>keymap——>搜索replaceinpath

    2022年10月7日
    0
  • Maven打包时引入本地jar包

    Maven打包时引入本地jar包背景开发的时用到的jar包可能在私服中找不到,需在下载到本地,然后在编译器Eclipse或者IDEA中引入本地jar包,这样在本地开发是OK的,但是linux服务器通过Maven打包的时候会提示异常找不到对应的类。这是需要在我们的pom.xml文件添加点配置了。落地开发支付宝沙箱支付时,需要引入本地jar包,我把jar存放的项目中的/src/main/resources/lib下1.打…

    2022年5月27日
    119
  • Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)

    Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)导语”慢品人间烟火色闲观人间岁月长”———致自己​​​​????遇见我以后,我们的故事就开始了,愿你历经山河,仍觉得人间值得????。​星光月夜烟花皆归你,我也归你。关于烟花????大家都​知道多少?有多少表白故事情节都发生在烟花下,想必木木子????不用说大家也知道叭~​​今天这则小短文就是关于烟花的故事!你准备好跟我一起进入烟花的世界了嘛?​正文“每一句文案,都有一个故事,你仔细听”​1)环境安装????准备好:.

    2022年6月2日
    34
  • Winscp连接不上Kali

    Winscp连接不上Kali解决Winscp无法连接kali的问题

    2022年9月13日
    0
  • tomcat突然宕机问题解决方案

    tomcat突然宕机问题解决方案一.tomcat突然宕机时间2019年10月19号8点30分51秒,xxxx系统生产环境的92机器出现tomcat突然宕机问题。二.问题定位1.排查tomcat的启停日志。在文件tomcat/logs/localhost.xxxx.log,排查tomcat的启停日志正常。在宕机时刻,有关闭日志输出。2.使用history命令,查看系统的操作命令。发现使用‘./bi…

    2022年7月26日
    31

发表回复

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

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