首页 > 其他分享 >Lamda表达式

Lamda表达式

时间:2023-04-01 16:59:01浏览次数:43  
标签:Lamda love like System println out 表达式 lambda

函数式接口

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

lambda表达式

练习一:

//推导Lambda表达式
public class TestLambda1 {
    // 3.静态内部类
   static class Like2 implements ILike{

        @Override
        public void lambda() {
            System.out.println("i like lambda-->静态内部类");
        }
    }




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

        like = new Like2();
        like.lambda();

        // 4.局部内部类
        class Like3 implements ILike{

            @Override
            public void lambda() {
                System.out.println("i like lambda-->局部内部类");
            }
        }
        like = new Like3();
        like.lambda();


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

        // 6. 用lambda简化
        like =()->{
            System.out.println("i like lambda-->lambda简化");
        };
        like.lambda();

        

    }
}

// 1. 定义一个函数式接口
interface ILike{
    void lambda();
}

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

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


  • 运行结果
    image

练习二:

public class TestLambda2 {
    
    public static void main(String[] args) {

        Love love = null;
        //1. Lambda表达式简化
        love =(int a)-> {
            System.out.println("i love "+a);
        };
        //2. 简化括号
        love =a-> {
            System.out.println("i love "+a);
        };
       /*
        love =(a,b)-> {
            System.out.println("i love "+a);
            System.out.println("i love 999");
        };
        */
        //3. 去掉花括号
        love =a->System.out.println("i love "+a);

        love.love(666);

        /*总结:
            lambda表达式只能有一行代码情况下才能简化成为一行,如果有多行,那么就用代码块包裹
            前提:接口是函数式接口
            多个参数也可以去掉参数类型,要去掉必须全部去掉,必须加上括号

         */

    }

}

// 函数式接口
interface Love{
    void love(int a);
}

总结:
lambda表达式只能有一行代码情况下才能简化成为一行,如果有多行,那么就用代码块包裹
前提:接口是函数式接口
多个参数也可以去掉参数类型,要去掉必须全部去掉,必须加上括号


为什么要使用Lambda表达式

  • 避免匿名内部类定义过多
  • 使代码看起来简洁
  • 去掉了一堆没有意义的代码,留下核心代码

标签:Lamda,love,like,System,println,out,表达式,lambda
From: https://www.cnblogs.com/CenCen/p/17278862.html

相关文章

  • day11| 20.有效的括号;150.逆波兰表达式求值;1047.删除字符串中的所有相邻重复项
    20.有效的括号 题目简述:给定一个只包括'(',')','{','}','[',']' 的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。 思路:1.利用一个栈实现2.构建一个字典,键......
  • 中缀逻辑表达式转后缀逻辑表达式
    #include<bits/stdc++.h>usingnamespacestd;/*中缀逻辑表达式转后缀逻辑表达式测试用例:0&(0|1|0)答案:001|0|&*/unordered_map<char,int>h{{'|',1},{'&',2}};strings;stringt;stack<char>stk;intmain(){cin......
  • 中缀表达式转后缀表达式
    中缀表达式转后缀表达式一、中缀表达式和后缀表达式的区别中缀表达式就是我们通常认知中的表达式,比如\[1+((2+3)*4)-5\]这样的表达式虽然容易被人所理解,但是不容易被机器所识别,为此推出了后缀表达式。后缀表达式又被叫做逆波兰表达式,逆波兰表达式不需要被括号所识别,且容易被机......
  • Hangfire 定时任务设置某个时间区间每隔一定时间触发的Cron表达式
    Cron表达式Hangfire使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成。Cron表达式时间字段(从左到右依次为):位置时间域名允许值允许的特殊字符1秒0-59,-*/2分钟0-59,-*/3小时0-23,-*/4日期1-31......
  • 常用API(Math,System,Runtime,Object,Objects,BigInteger,BigDecimal,正则表达式)
    常用API(Math,System,Runtime,Object,Objects,BigInteger,BigDecimal,正则表达式)多使用帮助文档类型取值范围和默认值Math类:​ 概念:帮助我们进行数学计算的工具类,里面的方法都是静态的,所以无需实例化这个类​ 常用方法:​ abs::获取绝对值 absExact:获取绝对值 rou......
  • python正则表达式记录
    今天写个脚本用到正则表达式,查阅了资料加问了gpt老师终于解决,在此记录。记录两种正则表达式有用的用法:1、匹配指定了前后文的字符串如我们需要匹配'ontheonehand'中的'one',而不要'ontheotherhand'中的'other';需要用到正则表达式语法中的“特殊构造”:(?...),之所以是特殊构......
  • 定时任务@Scheduled中的cron 表达式和 fixedRated类配置参数
    1.cron表达式格式:@Scheduled(cron="******"){秒数}{分钟}{小时}{日期}{月份}{星期}{年份(可为空)}{秒数} ==>允许值范围:0~59,不允许为空值,若值不合法,调度器将抛出SchedulerException异常"*"代表每隔1秒钟触发;","代表在指定的秒数触发,比如"0,15,45"......
  • 波兰表达式与逆波兰表达式
    波兰表达式与逆波兰表达式1.何为前缀(波兰)、中缀、后缀(逆波兰)表达式1.1前缀表达式前缀表达式是一种没有括号的算数表达式,其与中缀表达式不同的是,运算符写在前面,操作数写在后面。一般形式的(3+4)×5-6即为中缀表达式,该中缀表达式对应的前缀表达式(或称波兰表达式)为:-×+34561.1.......
  • 浅析C++11 lambda表达式用法
    Lambda表达式(匿名函数、Lambda函数)是现代C++在C++11和更高版本中的一个新的语法糖,可以让我们快速便捷的创建一个函数。[capture-list](params)mutableexceptionattribute->return-type{body}capture-list:捕获列表,一般在Lambda表达式开头,捕获上下文中的变量,用......
  • 正则表达式
    一、元字符元字符是构造正则表达式的一种基本元素。.:匹配除换行符以外的任意字符w:匹配字母或数字或下划线或汉字s:匹配任意的空白符d:匹配数字b:匹配单词的开始或结束^:匹配字符串的开始$:匹配字符串的结束匹配有abc开头的字符串:abc或者^abc匹配8位数字的QQ号码:^dddddddd$......