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

lambda表达式

时间:2024-08-26 19:22:55浏览次数:7  
标签:int text System println 返回值 out 表达式 lambda

1.什么是lambda表达式

Lambda允许把函数作为一个方法的参数,使用Lambda表达式可以写出更简洁、更灵活的代码,而其作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。

2.lambda表达式语法

Lambda表达式在Java语言中引入了一个操作符**“->”**,该操作符被称为Lambda操作符或箭头操作符。它将Lambda分为两个部分:

左侧:指定了Lambda表达式需要的所有参数

右侧:制定了Lambda体,即Lambda表达式要执行的功能。

只能应用于函数式接口(只有一个抽象方法的接口,可用@FunctionalInterface注解判断)

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

     If1 f1 =()-> System.out.println("无参数 无返回值");
     f1.text();

     If2 f2 =(int x) ->System.out.println("单参数 无返回值"+x);
     f2.text(2);

     If3 f3 =(int x,int y) -> System.out.println("多参数 无返回值"+x+y);
     f3.text(3,3);

     If4 f4=()->{ return 4;};
     System.out.println("无参数 有返回值"+f4.text());

     If5 f5 =(int x)->{return x;};
     System.out.println("单参数 有返回值"+f5.text(5));

     If6 f6 =(int x,int y)->{return x+y;};
        System.out.println("多参数 有返回值"+f6.text(6,6));
        
    }
}
interface If1{
    // 无参数 无返回值
      void text();
}
interface If2{
    //单参数 无返回值
    void text(int x);
}
interface If3{
    //多参数 无返回值
    void text(int x,int y);
}
interface If4{
    //无参数 有返回值
    int text();
}
interface If5{
    //单参数 有返回值
    int text(int x);
}
interface If6{
    //多参数 有返回值
    int text (int x, int y);
}

3.简化规则

  • 1.参数类型可以省略
  • 2.只有一个参数,()可省略
  • 3.只有一条语句,{}可省略
  • 4.如果只有一条return ,{} return同时省略
If1 f1 =()-> System.out.println("无参数 无返回值");
f1.text();

If2 f2 = x ->System.out.println("单参数 无返回值"+x);
f2.text(2);

If3 f3 =(x,y) -> System.out.println("多参数 无返回值"+x+y);
f3.text(3,3);

If4 f4=()->4;
System.out.println("无参数 有返回值"+f4.text());

If5 f5 =x->x;
System.out.println("单参数 有返回值"+f5.text(5));

If6 f6 =(x,y)-> x+y;
   System.out.println("多参数 有返回值"+f6.text(6,6));

4.方法的引用

If if1=(x,y)->x-y;
System.out.println(if1.text(10,5));

If if2 =(x,y)->x-y;
System.out.println(if2.text(2,1));

//接口
interface If{
    int text(int x,int y);
}

对于以上代码如果多次有相同的需求,我们可以把重复的代码封装成一个类 ,在使用时调用即可 格式: 对象名::方法名

如果是static 则为 类名::方法名

public class Main2 {
    public static void main(String[] args) {
        Main2 main = new Main2();
        If if1=main::text2;
        System.out.println(if1.text(10,5));

        If if2 =main::text2;
        System.out.println(if2.text(5,10));

    }
    public int text2 (int x,int y){
        return x-y;
    }
}

interface If{
    int text(int x,int y);
}

4.构造方法的引用

创建一个实体类dog 属性有id 和name

在创建两个接口 一个有参,一个无参

interface DogService{
    Dog getDog();
}
interface DogService2{
    Dog getDog(int id,String name);
}

代码实现

DogService dg = ()-> new Dog();
System.out.println(dg.getDog());

DogService2 dg2 =(x,y)-> new Dog(x,y);
System.out.println(dg2.getDog(1,"自政纲"));

或者引用格式

DogService new_dg = Dog::new;
System.out.println(new_dg.getDog());

DogService2 new_dg2 = Dog::new;
System.out.println(new_dg2.getDog(2,"自政纲"));

标签:int,text,System,println,返回值,out,表达式,lambda
From: https://blog.csdn.net/qq_65993561/article/details/141502003

相关文章

  • 代码训练营 Day11 | 150. 逆波兰表达式求值 | 239. 滑动窗口最大值 | 347.前 K 个高频
    150.逆波兰表达式求值逆波兰表达式(后缀表达式)(1+2)x(3+4)的后续表达顺序是:左右中 后缀表达式:12+34+x使用栈思路1.遇见数字就放入栈,遇见操作运算符,取出栈里的数字进行运算2.每次取元素的时候只取两个元素3.结果就是栈最后的元素classSolution(object):d......
  • 字符串值提取工具-10-java 执行表达式引擎
    值提取系列字符串值提取工具-01-概览字符串值提取工具-02-java调用js字符串值提取工具-03-java调用groovy字符串值提取工具-04-java调用java?Janino编译工具字符串值提取工具-05-java调用shell字符串值提取工具-06-java调用python字符串值提取工具-07-ja......
  • 【8.2 python中的使用re模块实现正则表达式操作】
    python中的使用re模块实现正则表达式操作Python中的re模块提供了对正则表达式的支持。正则表达式(RegularExpression,简称regex或regexp)是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列符合某个句法......
  • JAVA表达式(包括IDEA的介绍)
    JavaIDEA介绍:IDE:集成开发环境(IDE,IntegratedDevelopmentEnvironment)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。Eclipse,IntelliJIDEA..........
  • Java 12 新特性—Switch 表达式
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • 表达式用法,ref定义响应式,v-bind指令和图片轮播结合,class和style内联样式绑定,事件监听
    表达式用法当前时间,随机数,返回值,判断取值ref响应式使用ref赋值和普通赋值v-bind指令和图片轮播结合(v-bind可以省略成":")class和style内联样式绑定数据绑定一个常见需求是操作元素的class列表和它的内联样式两个class会用到这两个的样式,用v-bind对class里面的......
  • Python Lambda 表达式详解
    PythonLambda表达式详解1.引言在Python中,lambda表达式是一种创建小型匿名函数的方法。这种函数不需要使用def关键字来定义,通常用于编写简短的函数或作为其他函数的参数。lambda函数可以接受任意数量的参数,但只能有一个表达式,该表达式的结果就是函数的返回值。2.Lambd......
  • 程序设计语言基础-编译过程概述+表达式
    程序设计语言分类面向机器的语言由0、1组成的机器指令序列或汇编语言(如:moveax,bx),可读性差,难以修改和维护。面向应用程序的语言如,Java、C、C++、Python、Delphi、PASCAL等,更接近人类语言,提高程序设计效率。程序设计语言分类生成目标代码过程编译程序词法分析输入源程......
  • C#—lambda表达式
    在一些数组的方法,有些方法需要传递一个方法进行计算,但是这个方法可能只需要使用一次,将他封装到类中会比较麻烦且没必要,这时候就可以使用lambda表达式了。lambda表达式可以很方便的创建一个方法创建方式lambda可以使用两种方式来创建//表达式lambda,会自动返回......
  • Python正则表达式提取车牌号
    在Python中使用正则表达式(RegularExpressions)来提取车牌号是一个常见的任务,尤其是在处理车辆信息或进行图像识别后的文本处理时。中国的车牌号格式多种多样,但通常包含省份简称、英文字母和数字。以下是一个使用Python正则表达式来提取常见中国车牌号(包括新能源车牌)的示例代码。1......