前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >01-Java8新特性 Lambda 表达式

01-Java8新特性 Lambda 表达式

作者头像
彼岸舞
发布2021-12-14 19:47:02
2360
发布2021-12-14 19:47:02
举报

新特性简介

  • 速度更快
  • 代码更少(增加了新的语法Lambda表达式)
  • 强大的StreamApi
  • 便于并行
  • 最大化减少空指针异常Optional

其中最为核心的就是Lambda表达式和StreamApi

Lambda表达式简介

Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样传递),可以写出更简洁,更灵活的代码,作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升.

Lambda表达式的基础语法

在Java8中引入了一个新的操作符 "->" 该操作符称为箭头操作符或Lambda操作符

箭头操作符将Lambda表达式拆分为两部分:

  • 左侧:Lambda 表达式的参数列表
  • 右侧:Lambda 表达式中所需执行的功能,即 Lambda体

无参数,无返回值

代码语言:javascript
复制
@Test
public void test1() {
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            System.out.println("无参数,无返回值");
        }
    };
    runnable.run();
    System.out.println("----------------------");
    Runnable runnable1 = () -> System.out.println("无参数,无返回值");
    runnable1.run();
}

有一个参数,无返回值

代码语言:javascript
复制
@Test
public void test2() {
    Consumer consumer = new Consumer() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };
    consumer.accept("有一个参数,无返回值");
    System.out.println("-----------------------");

    Consumer consumer1 = (s) -> System.out.println(s);
    // 单参数可以不加小括号
    Consumer consumer2 = s -> System.out.println(s);
    // 单行代码,方法引用,第三章写,可以当做先看不见
    Consumer consumer3 = System.out::println;
    consumer1.accept("有一个参数,无返回值");
    consumer2.accept("有一个参数,无返回值");
    consumer3.accept("有一个参数,无返回值");
}

晚上白光不好看,IDEA调成黑色

有两个及其以上参数,有返回值,多行代码

代码语言:javascript
复制
@Test
public void test3() {
    // 左侧两个及其两个以上参数必须写小括号,右侧执行体,一行代码可以不写return和大括号,多行代码必须写大括号
    Comparator comparator = (x, y) -> {
        System.out.println("函数式接口");
        return Integer.compare(x,y);
    };
}

为什么参数可以不写数据类型?

其实是可以写数据类型的,但是所有参数都要写,和不写效果是一样的,所以还不如不写,我们不靠字数赚钱

为什么可以不写呢?应为JVM编译器可以通过上下文推断出,数据类型,即"类型推断"

Lambda表达式需要函数式接口的支持

总结

上联:左右遇一括号省

下联:左侧推断类型省

横批:能省则省

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 新特性简介
  • Lambda表达式简介
  • Lambda表达式的基础语法
    • 无参数,无返回值
      • 有一个参数,无返回值
        • 有两个及其以上参数,有返回值,多行代码
          • 为什么参数可以不写数据类型?
          • 总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档