Lambda表达式的学习

简介:

我们可以把Lambda表达式理解为一段可以传递的代码(将代码像数据一样进行传递)。Lambda允许把函数作为一个方法的参数,使用Lambda表达式可以写出更简洁、更灵活的代码,而其作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。

Lambda表达式语法

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

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

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

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

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

Lambda表达式六种语法格式:(重要)

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

public void test01(){
    Runnable runnable=()-> System.out.println("我爱北京天安门");
    runnable.run();//结果:我爱北京天安门
  }

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

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

(3)语法格式三:Lambda表达式类型推断,参数类型可以省略:

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

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

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

(5)语法格式五:Lambda需要两个及以上的参数,多条执行语句,并且可以有返回值:

Comparator<Integer> com=new Comparator<Integer>() {
		@Override
		public int compare(T o1, T o2) {
			System.out.println(o1);
			System.out.println(o2);
			return o1.compareTo(o2);
		}
	};
===========================================================
    Comparator<Integer> com=(T o1,T o2)->{
    		System.out.println(o1);
			System.out.println(o2);
			return o1.compareTo(o2);
	};

(6)语法格式六:当Lambda体只有一条语句时候,return与大括号若有,都可省略。

Comparator<Integer> com=new Comparator<Integer>() {
		@Override
		public int compare(o1,o2) {
			return o1.compareTo(o2);
		}
	};
===========================================================
    Comparator<Integer> com=(o1,o2)->o1.compareTo(o2);

以上六种情况的总结:

左边:Lambda形参列表的参数类型左边可以省略,如果lambda形参列表只有一个参数,那么其括号也可以省略;

右边:lambda体应该由一对{}包裹,如果lambda体只有一条执行语句,可能是return,那么其=这个方法体的中括号也可以省略。

语法背诵口诀:左右遇一括号省,左侧推断类型省,能省则省。

上述内容学习自:

哔哩哔哩尚硅谷宋红康666节课:666.10-尚硅谷-高级-Lambda表达式使用举例_哔哩哔哩_bilibili

以及csdn大佬详解:(5条消息) Lambda表达式超详细总结_Code0cean的博客-CSDN博客_lambda表达式详细总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值