`

Lambda 表达式 入门

 
阅读更多
以下代码实践来自 菜鸟网https://www.runoob.com/java/java8-lambda-expressions.html

公司项目中有用到Lambda表达式,自己又不会,看代码感觉都费劲,于是决定学习探索一番,我选了菜鸟网里的demo跟着实践,逐步学习,希望可以进步。

jdk版本:java version "1.8.0_181"
代码开发环境:idea

直接看demo
/**
 * 语法
 * lambda 表达式的语法格式如下:
 *
 * (parameters) -> expression
 * 或
 * (parameters) ->{ statements; }
 * 以下是lambda表达式的重要特征:
 *
 * 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
 * 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
 * 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
 * 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
 * 注意事项
 * lambda 表达式只能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误。
 * 可以直接在 lambda 表达式中访问外层的局部变量:
 * lambda 表达式的局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义)
 */
public class LambdaTest {

     static final String salution = "Hello! ";
    public static void main(String[] args) {
        System.out.println("测试Lambda表达式---学习Lambda表达式");
        // 1.不需要参数,返回值为5
//        () -> 5
        /*() -> {
            return 5;
        }*/
        // 2.接收一个参数(数字类型),返回其2倍的值
//         x -> 2 * x
         /*x -> {
             return 2 * x;
         }*/
         // 3.接收两个参数 (数字),并返回他们的差值
//          (x, y) -> x - y
         /* (x, y) -> {
              return x - y;
          } */
          // 4 接收2个int型整数,返回他们的和
//        (int x ,int y) -> x + y
          /* (int x ,int y) -> {
                    return x + y;
           }*/
         // 5 接收一个String 对象,并在控制台打印,不返回任何值(看起来像是返回void)
//        (String s) -> System.out.println(s)
       /* (String s) -> {
            return System.out.println(s);
        }*/

       LambdaTest tester = new LambdaTest();
        // 类型声明
        MathOperation addition = (int a, int b) -> a + b;
        // 不用类型声明
        MathOperation subtraction = (a,  b) -> a - b;
        // 大括号中的返回语句
        MathOperation multiplication = (int a, int b) -> {return a * b;};
        // 没有大括号及返回语句
        MathOperation division = (int a, int b) -> a / b;

        System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
        System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
        System.out.println("10 × 5 = " + tester.operate(10, 5, multiplication));
        System.out.println("10 / 5 = " + tester.operate(10, 5, division));

        // 不用括号
        GreetingService greetingService1 = message -> System.out.println("Hello " + message);

        // 用括号
        GreetingService greetingService2 = (message) -> System.out.println("Hello " + message);

        greetingService1.sayMessage("Runoob");
        greetingService2.sayMessage("Google");

        // lambda表达式只能引用标记了final的外层局部变量
        GreetingService greetingService3 = message -> System.out.println(salution + message);
        greetingService3.sayMessage("Runoob "); // Hello! Runoob

        final int num = 1;
        Converter<Integer,String> s = (param) -> System.out.println(String.valueOf(param + num));
        s.convert(2); // 输出结果为 3
    }
    interface MathOperation {
        int operation(int a, int b);
    }

    interface GreetingService {
        void sayMessage(String message);
    }

    public interface Converter<T1, T2>{
        void convert(int i);
    }

    private int operate(int a, int b, MathOperation mathOperation){
        return mathOperation.operation(a, b);
    }
}
/**
 测试Lambda表达式---学习Lambda表达式
 10 + 5 = 15
 10 - 5 = 5
 10 × 5 = 50
 10 / 5 = 2
 Hello Runoob
 Hello Google
 Hello! Runoob
 3
*/

分享到:
评论

相关推荐

    一份易上手的C# Lambda表达式入门学习资料

    C# Lambda表达式入门学习资料 本文旨在为新手提供易于理解的C# Lambda表达式入门学习资料,帮助读者快速掌握Lambda表达式的基础知识和应用场景。 Lambda表达式是什么? -------------------- Lambda表达式是一种...

    C#lambda表达式入门.pptx

    通过多个示例详细演示了.Net中C#语言lambda表达式的基本用法,主要包括三个方面内容: 1.什么是lambda表达式 2.理解lambda表达式 3.使用lambda表达式

    Java Lambda表达式入门示例

    Java Lambda表达式入门示例 Java Lambda表达式是Java 8中引入的一种新特性,它允许开发者使用更简洁的代码来创建只有一个抽象方法的接口(函数式接口)的实例。Lambda表达式主要作用就是代替匿名内部类的繁琐语法。...

    Java的lambda表达式讲解代码(各种lambda表达式使用方式:无参、一个参数、多参数、简化形式...)

    1、函数式编程入门:通过阅读本源码资源,可以快速掌握Lambda表达式的基本语法和特性,为进一步学习函数式编程打下基础。 2、提高代码可读性:使用Lambda表达式可以减少样板代码,并使代码更加简洁和易读。本源码...

    Lambda表达式入门,看这篇就够了!.zip

    计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习...

    Lambda表达式和stream流的入门

    Lambda表达式和stream流的入门 java 响应式编程

    快速入门Java中的Lambda表达式

    Java中的Lambda表达式是Java SE 8引入的一个关键特性,它是函数式编程风格的重要组成部分。在其他编程语言中,如Scala、Haskell等,Lambda表达式早已被广泛使用,但Java直到第八个版本才正式支持。Lambda表达式使得...

    Python学习笔记之lambda表达式用法详解

    为了更深入地理解Python中的lambda表达式以及相关的函数编程技巧,可以参考一些专门的教程和专题,如《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、...

    30分钟入门Java8之lambda表达式学习

    这里的 `view -&gt; Log.d(TAG, "按钮被点击,lambda表达式")` 就是一个 Lambda 表达式,它的结构如下: 1. `(view)` 是参数列表,可以有零个或多个参数,参数类型可指定也可省略,这里省略了 `View` 类型。 2. `-&gt;` 是...

    Java高级特性入门二.pdf

    一、Lambda表达式入门 1. Lambda的起源与概念 Lambda表达式源自于数学中的λ演算,它提供了一种表示匿名函数的方法。在Java中,Lambda表达式是Java 8引入的一个重要特性,它支持函数式编程的思想,使得我们可以以更...

    java lambda入门

    Java Lambda入门教程旨在引导开发者了解并掌握Java 8引入的一项重要特性——Lambda表达式。Lambda表达式是函数式编程的核心元素,它简化了代码,尤其是处理匿名内部类时的复杂性,使得Java语言更加简洁、易读。在这...

    12.1 lambda表达式|函数式编程: 匿名函数、高阶函数、装饰器|Python3.8入门 & 进阶 & 原生爬虫实战完全解读

    12.1_lambda表达式|函数式编程__匿名函数、高阶函数、装饰器|Python3.8入门_&_进阶_&_原生爬虫实战完全解

    java lambda入门到高级代码实例

    总的来说,通过阅读和实践这个"java lambda入门到高级代码实例",你将能够全面掌握Lambda表达式的各种用法,包括基础和高级特性,从而提升你的Java编程技能。记得多动手实践,理论知识结合实际操作,才能更好地吸收...

    Java8特性从入门到精通

    Java8通过引入Lambda表达式极大地简化了代码,并为Java语言带来了全新的编程范式。 **1.1 Lambda表达式的概念** Lambda表达式是一种可以直接使用的函数,它可以接受参数并返回结果。在Java中,Lambda表达式通常...

    Java8 新特性之lamdba表达式和Optional

    1 Lambda表达式 2 1.1 Lambda语法糖 2 1.1.1 语法 2 1.1.2 Lambda表达式可使用的变量 3 1.1.3 lambda表达式中的this概念 3 1.2 函数式接口- Consumer/Predicate/Function/Supplier 4 1.1.4 什么是函数式接口 4 1.1.5...

    LambdaDemo.zip

    LambdaDemo.zip文件包含的是一个关于如何使用Java Lambda表达式的入门示例。在这个压缩包中,只有一个名为LambdaDemo的文件,可能是Java源代码文件,用于演示Lambda表达式的各种用法。 Lambda表达式的核心概念在于...

    【05-面向对象(下)】

    Lambda表达式入门 •Lambda表达式主要作用就是代替匿名内部类的繁琐语法。它由三部分组成:  –形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。  ...

    藏经阁-Java8从入门到精通-115.pdf

    1. **Lambda表达式**:Lambda表达式是一种简洁的函数式编程元素,允许将代码块作为参数传递给方法,简化了对集合的操作和其他回调机制。它通过消除冗余的匿名内部类,使得代码更加紧凑和易读。 2. **函数式接口**:...

Global site tag (gtag.js) - Google Analytics