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年6月13日 上午9:16
下一篇 2022年6月13日 上午9:16


相关推荐

  • Invalidate介绍[通俗易懂]

    Invalidate介绍[通俗易懂]1、Invalidate介绍  voidInvalidate(BOOLbErase=TRUE);  该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw函数,实际

    2025年5月23日
    6
  • 【Zigbee】进阶篇(1) Zigbee协议栈创建简单项目,协议栈、事件、消息学习[通俗易懂]

    【Zigbee】进阶篇(1) Zigbee协议栈创建简单项目,协议栈、事件、消息学习[通俗易懂]本篇文章:主要是协议栈的介绍,使用协议栈完成一个简单例子,协调器创建网络的相关问题,学会在协议栈中自定义事件等。正文如下:一、Zigbee协议栈1)Z-stack协议栈是什么?2)Zigbee协议栈分为应用层、网络层、MAC层、物理层.二、Z-stack协议栈1)安装配置协议栈2)创建协议栈项目3)信道4)事件5)消息

    2022年5月28日
    42
  • jquery改变链接移上光标时的颜色实例

    效果体验http://hovertree.com/texiao/jquery/18/完整代码如下:jquery设置a:hover颜色样式-何问起首页特效下面的链接,未访问的链接为蓝色,访问过的

    2021年12月21日
    60
  • Ubuntu安装Source Insight导入Android源码并设置仿IDEA主题Darcula「建议收藏」

    Ubuntu安装Source Insight导入Android源码并设置仿IDEA主题Darcula「建议收藏」预览先来张图给大家感受下效果,然后我再慢慢道来过程,保证你避免每一步的坑。我们要做什么1、由于SourceInsight(以下简称SI)是Windows应用,所以不能直接安装在Linux上,于是我们要借助wine,所以第一步会介绍wine的安装过程和坑;2、介绍SI在Linux(以Ubuntu16.04为例)上的安装,并介绍如何导入免费证书(个人建议大家有条件还是付费支持一下SI这个…

    2022年6月27日
    59
  • Java实现冒泡排序(详解)[通俗易懂]

    Java实现冒泡排序(详解)[通俗易懂]深度解析冒泡排序算法publicclassMySort{publicstaticvoidbubbleSort(intarray[]){for(inti=0;i<array.length;i++){for(intj=0;j<array.length-1-i;j++){if(array[j]>array[j+1]){

    2022年6月21日
    26
  • C语言中动态分配数组

    C语言中动态分配数组很多人在编写C语言代码的时候很少使用动态数组,不管什么情况下通通使用静态数组的方法来解决,在当初学习C语言的时候我就是一个典型的例子,但是现在发现这是一个相当不好的习惯,甚至可能导致编写的程序出现一些致命的错误。尤其对于搞嵌入式的人来所,嵌入式系统的内存是宝贵的,内存是否高效率的使用往往意味着嵌入式设备是否高质量和高性能,所以高效的使用内存对我们来说是很重要的。那么我们在自己编写C语言代码的时候就…

    2022年7月22日
    10

发表回复

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

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