逸学java【初级菜鸟篇】9.2Lambda表达式

21 篇文章 0 订阅
13 篇文章 0 订阅

hi,我是逸尘,一起学java吧


Lambda概述

lambda表达式是jdk8开始后的一种新语法形式,
在之前的章节我们学习了(7.5章)匿名内部类,它是方便创建子类对象,最终目的为了简化代码编写,少创建一个子类,直接使用对象的写法重写父类方法。

那么我们现在继续简化代码写法就是我们的lambda表达式。

格式

(匿名内部类被重写方法的形参列表)->{
          被重写方法的方法体代码

}

注意:->是语法形式,无实际含义 ,且Lambda表达式只能简化函数式接口的匿名内部类的写法。

函数式接口

首先必须是接口,其次接口中有且仅有一个抽象方法的形式,简单明了的说明了接口的用途。

ps:一个抽象方法其实这很好理解,我们的匿名内部类还是可以去重写方法的,重写方法就要写出重写哪一个方法,但是Lambda表达式又简化了,重写方法的方法名都省略了,如果不是一个抽象方法,那么就乱了(因为没有规定方法名)。所以,Lambda表达式是特定的匿名内部类的简化写法,但是它非常重要。

package com.yd.yc;
//打招呼的接口
//注释它是一个函数式接口,就是说它这个接口只有一个方法,孤家寡人
@FunctionalInterface
public interface Hi {
    //打招呼的方法
    String say();
}

 

Lambda的注意点

lambda无法更改局部变量,会报错

lambda会默认抛出抽象方法的异常

如果只有一个参数,参数类型可以省略,同时()也可以省略。 

如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return 语句,必须省略return不写,同时也必须省略";"不写。

lambda是一个匿名函数,我们可以把lambda表达式理解为是一段可以传递的代码,它可以写出更简洁,更灵活的代码,作为一种更紧凑的代码风格,使java语言表达能力得到了提升。

Lambda语法 方法的引用

lambda表达式还添加了新的语法,用来引用方法,也就是说方法也可以作为对象去调用

包括引用静态,成员,构造方法。

引用静态方法

类名::静态方法名

 引用成员方法

对象名 ::成员方法名

 引用构造方法

类名::new

Fuction接口

在之前的实例中,想使用lambda表达式都需要创建或者已有函数式接口,那么如果只是想用lambda那么其实也是可以的,在java.util.fuction提供了很多预定义的函数式接口,没有实现任何功能,仅用来封装lambda表达式对象,最常用的是Fuction<T,R>这个接口。

Lambda表达式遍历集合

我们在上一节遍历集合没有使用Lambda,那么现在我们使用,来体验一下效果。

collection结合Lambda

package com.yd.yc;

import java.util.Arrays;
import java.util.List;

public class LambdaOne {
    public static void main(String[] args) {
        //创建list
        List<String> list = Arrays.asList("123","456","99999");
        //输出list里面的每个内容
        list.forEach(System.out::println);
    }
}

本质上还是for加强只不过可以lambda表达

ps:System.out::println是,PrintStream类并没有无参构造,PrintStream类我们不好获取,我们用System.out类代替一下,其实也是类名::静态方法名的一种,记一下就好。

Map结合Lambda

import java.util.HashMap;



public class demo {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();
        map.put("橙汁","3元");
        map.put("可乐","4元");
        map.put("雪碧","5元");
        map.forEach((key,value)-> System.out.println(key+""+value));
         }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员逸尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值