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


相关推荐

  • oracle面试必会6题经典_oracle常见面试题

    oracle面试必会6题经典_oracle常见面试题1.你要对操纵Oracle数据库中的数据。下列哪个选项表示Oracle中select语句的功能,并且不需要使用子查询(C)A.可以用select语句改变Oracle中的数据B.可以用select语句删除Oracle中的数据C.可以用select语句和另一个表的内容生成一个表D.可以用select语句对表截断2.你要在Oracle中定义SQL查询。下列哪个数据库对象不能直接从select语句中引用…

    2022年10月18日
    4
  • leetcode-91解码方法(动态规划|记忆化搜索)[通俗易懂]

    leetcode-91解码方法(动态规划|记忆化搜索)[通俗易懂]一条包含字母 A-Z 的消息通过以下映射进行了 编码 :‘A’ -> 1‘B’ -> 2…‘Z’ -> 26要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“111” 可以将 “1” 中的每个 “1” 映射为 “A” ,从而得到 “AAA” ,或者可以将 “11” 和 “1”(分别为 “K” 和 “A” )映射为 “KA” 。注意,“06” 不能映射为 “F” ,因为 “6” 和 “06” 不同。给你一个只含数字的 非空 字符串

    2022年8月8日
    6
  • 将图片转成线稿图_图片怎么转成线稿

    将图片转成线稿图_图片怎么转成线稿1、首先找一张图片,在PS中打开,我随便找了一张自己收藏的壁纸如下图:2、打开图片之后, 我们先把图像处理成黑白。点击菜单栏:图像-调整-黑白。快捷键:Alt+Shitf+Ctrl+B

    2022年8月2日
    7
  • RadControls for ASP.NET Ajax 笔记(2)[通俗易懂]

    RadControls for ASP.NET Ajax 笔记(2)[通俗易懂] 1.RadGrid中展开的项更新(如果有一项被展开,对该项数据做了改动,此时需要更新显示)foreach(GridDataItemiteminRadGrid1.MasterTableView.Items)          {              if(item.Expanded)              {        …

    2022年7月19日
    20
  • c语言病毒源码讲解,【病毒】震荡波病毒C语言源码「建议收藏」

    该楼层疑似违规已被系统折叠隐藏此楼查看此楼/*#include#include#include#include#include#defineNORM”\033[00;00m”#defineGREEN”\033[01;32m”#defineYELL”\033[01;33m”#defineRED”\033[01;31m”#defineBANNERGREEN”…

    2022年4月14日
    40
  • Adobe Dreamweaver的使用教程

    Adobe Dreamweaver的使用教程1.打开AdobeDreamweaver软件2.打开后的界面3.新建一个站点,保存网页文件,图片,视频等4.输入站点的名字和保存的路径5.新建html文件6.选择设计模式7.制作你所需要的结果8.保存网页,才能在浏览器中预览

    2022年6月12日
    44

发表回复

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

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