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


相关推荐

  • 个人计算机安全

    个人计算机安全

    2022年3月12日
    38
  • 数据库习题及答案5

    数据库习题及答案5模拟测验1一、1 2 3 4 5 6 7 8 9 10A D C c D A C A A C一、选择题(在每个小题四个备选答案中选出一个正确答案,填在题末的括号中)(本大题共10小题,每小题2分,总计20分)()是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。A.DBMSB.DBC.DBSD.DBA下列四项中,不属于SQL2005实用程序的是()。A.对象资源管理器B.查询分析.

    2025年6月9日
    5
  • 新版大官场–男人是山

    新版大官场–男人是山一部官场小说,写的有点虚无缥缈,不够真实。[@more@]这本小说的写法有点发散,期间有些年份的跨度不够合理,中规中矩,闲时可看看。…

    2022年4月28日
    116
  • ADB 环境变量配置教学

    步骤如下:1、右击电脑图标点击电脑属性2、找到相关设置点击高级系统设置3、找到高级点击环境变量4、在系统变量中点击双Path5、点击新建6、确定

    2022年4月9日
    88
  • React教程(详细版)

    React教程(详细版)一、简介(背景)1.1、概念它是一个将数据渲染为HTML视图的js库1.2、原生js痛点用dom的API去操作dom,繁琐且效率低用js直接操作dom,浏览器会进行大量的回流和重绘原生jjs没有组件化的编程方案,代码复用性低,哪怕有模块话的概念,但模块化也只能拆解一个个js,对样式和结构也没办法拆解,组件化就相当于3剑客整体拆解,成为一个个的小功能1.3、React特点采用组件化模式,声明式编码,提高开发效率和组件复用性在ReactNative中可以用react预发进行安卓、io

    2022年7月16日
    21
  • (授人以鱼不如授人以渔)mysql-connector-java各种版本下载地址

    (授人以鱼不如授人以渔)mysql-connector-java各种版本下载地址原文:https://blog.csdn.net/Milan__Kundera/article/details/81182757mysql-connector-java下载地址:http://mvnrepository.com/artifact/mysql/mysql-connector-java选择自己的版本:然后再点击…

    2022年7月25日
    11

发表回复

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

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