首页 > 编程语言 >Java8新特性-Lambda表达式

Java8新特性-Lambda表达式

时间:2023-01-04 22:00:25浏览次数:52  
标签:System 参数 println out Java8 表达式 Lambda

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

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

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

以下是lambda表达式的重要特征:

  可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
  可选的参数圆括号:一个参数无需定义圆括号,但无参数或多个参数需要定义圆括号。
  可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
  可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

下面对每个语法格式的特征进行举例说明:

(1)语法格式一:无参,无返回值,Lambda体只需一条语句。如下:

@Test
public void test01(){
    Runnable runnable=()-> System.out.println("Runnable 运行");
    runnable.run();//结果:Runnable 运行
}

(2)语法格式二:Lambda需要一个参数,无返回值。如下:

1 @Test
2 public void test02(){
3     Consumer<String> consumer=(x)-> System.out.println(x);
4     consumer.accept("Hello Consumer");//结果:Hello Consumer
5 }

(3)语法格式三:Lambda只需要一个参数时,参数的小括号可以省略,如下:

public void test02(){
  Consumer<String> consumer=x-> System.out.println(x);
  consumer.accept("Hello Consumer");//结果:Hello Consumer
}

(4)语法格式四:Lambda需要两个参数,并且Lambda体中有多条语句。

@Test
public void test04(){
  Comparator<Integer> com=(x, y)->{
  System.out.println("函数式接口");
  return Integer.compare(x,y);
  };
  System.out.println(com.compare(2,4));//结果:-1
}

(5)语法格式五:有两个以上参数,有返回值,若Lambda体中只有一条语句,return和大括号都可以省略不写

@Test
public void test05(){
  Comparator<Integer> com=(x, y)-> Integer.compare(x,y);
  System.out.println(com.compare(4,2));//结果:1
}

(6)Lambda表达式的参数列表的数据类型可以省略不写,因为JVM可以通过上下文推断出数据类型,即“类型推断”

@Test
public void test06(){
  Comparator<Integer> com=(Integer x, Integer y)-> Integer.compare(x,y);
  System.out.println(com.compare(4,2));//结果:1
}

类型推断:在执行javac编译程序时,JVM根据程序的上下文推断出了参数的类型。Lambda表达式依赖于上下文环境。

原文出处:https://blog.csdn.net/huangjhai/article/details/107110182

标签:System,参数,println,out,Java8,表达式,Lambda
From: https://www.cnblogs.com/ZDY-XJ/p/17026125.html

相关文章

  • re模块01-正则表达式
    在python中,内置re模块,通过re模块,来操作正则表达式什么是正则表达式?一套规则,匹配字符串的一些网站中有正则表达式模块,可以参考,通过百度搜索就行字符组字符组:描述的是一......
  • 常用的正则表达式
    常用的正则表达式示例:简单密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度......
  • 【逆波兰表达式】【栈】LeetCode 150. 逆波兰表达式求值
    题目链接150.逆波兰表达式求值思路从左到右遍历tokens遇到数字便放入栈中,遇到运算符便弹出栈顶的两个数字进行运算。代码classSolution{publicintevalRPN(......
  • python中正则表达式和模块函数介绍
    |符号|解释|示例|说明||-----------------......
  • 【spring-boot】spring aop 面向切面编程初接触--切点表达式【专题】
     众所周知,spring最核心的两个功能是aop和ioc,即面向切面,控制反转。这里我们探讨一下如何使用springaop。1.何为aopaop全称AspectOrientedProgramming,面向切面,AOP主要......
  • 运算符和表达式
    一、运算符1.含义C语言中,数据是程序处理的对象,运算是对数据进行加工的过程,体现数据之间的各种不同运算关系的符号就称为运算符。C语言中,除了控制语句和输入输出以外的几乎......
  • 巧用数据分析表达式,让数据指标创建更简单
    实现数据+业务一体化的指标分析从零售系统进化史get数据统计的需求变更零售系统需要的数据统计需求V1.0只需要获取当日累计的销售额,于是店老板就用Excel或者纸质的表......
  • java8中常用函数式接口Supplier<T>、Consumer<T>、Function<T,R>、Predicate<T>使用示
    场景函数式接口(FunctionalInterface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。而java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用......
  • 基于linux下的shell正则表达式(grep,sed,awk)
    正则表达式:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一......
  • 巧用数据分析表达式,让数据指标创建更简单
    实现数据+业务一体化的指标分析从零售系统进化史get数据统计的需求变更零售系统需要的数据统计需求V1.0只需要获取当日累计的销售额,于是店老板就用Excel或者纸质的表......