当前位置: 移动技术网 > IT编程>开发语言>Java > Lambda表达式的六种用法

Lambda表达式的六种用法

2020年07月31日  | 移动技术网IT编程  | 我要评论
文章目录为什么使用Lambda表达式Lambda表达式的本质使用Lambda表达式的条件语法格式代码举例总结为什么使用Lambda表达式   Lambda是–个匿名函数,我们可以把Lambda表达式理解为是–段可以传递的代码(将代码像数据一样进行传递) 。使用它可以写出更简洁、更灵活的代码。作为-种更紧凑的代码风格,使Java的语 言表达能力得到了提升。Lambda表达式的本质   作为接口的实例使用Lambda表达式的条件JDK版本必须1.8以上接口只能有一个方法语法格式(0




为什么使用Lambda表达式

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

Lambda表达式的本质

   作为接口的实例

使用Lambda表达式的条件

  1. JDK版本必须1.8以上
  2. 接口只能有一个方法


语法格式

(01,02) ->Integer. compare(01,02);
-> :lambda操作符或箭头操作符
->左边: lambda形参列表(其实就是 接口中的抽象方法的形参列表)
->右边: Lambda体 (其实就是重写的抽象方法的方法体)



代码举例

package PackageTest01;

import java.net.SocketOption;
import java.util.Comparator;
import java.util.function.Consumer;

/**
 * LambdaTest表达式的使用
 * 共六种语法格式
 */
public class LambdaTest {

    public static void main(String[] args) {
        test5();
    }
    //语法格式一:无参,无返回值
    public static void test1(){
        Runnable r1 = new Runnable(){
            @Override
            public void run() {
                System.out.println("练习Lambda表达式的使用");
            }
        };
        r1.run();

        System.out.println("*************************");

        Runnable r2 = ()->System.out.println("练习Lambda表达式的使用2");
        r2.run();
    }

    //语法格式二:Lambda 需要一个参数,但是没有返回值
    public static void test2(){
        Consumer<String> con  = new Consumer<String>(){
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        };
        con.accept("谎言和誓言的区别是什么?");

        Consumer<String> con2  = (String s)->{
                System.out.println(s);
        };
        con.accept("一个是听的人当真了,一个是说的人当真了");
    }

    //语法格式三:数据类型可以省略,因为可由编辑器推断出,称为“类型推断”
    public static void test3(){
        Consumer<String> con1  = (String s)->{
            System.out.println(s);
        };
        con1.accept("一个是听的人当真了,一个是说的人当真了");

        System.out.println("**********************");

        Consumer<String> con2  = (String s)->{
            System.out.println(s);
        };
        con2.accept("一个是听的人当真了,一个是说的人当真了");
    }

    //语法格式四:Lambda 如只需要一个参数时,参数的小括号可以省略
    public static void test4(){
        Consumer<String> con1  = (s)->{
            System.out.println(s);
        };
        con1.accept("一个是听的人当真了,一个是说的人当真了");

        Consumer<String> con2  = s->{
            System.out.println(s);
        };
        con2.accept("一个是听的人当真了,一个是说的人当真了");
    }

    //语法格式五:Lambda 需要两个或者两个以上的参数,多条执行语句,并且可以有返回值
    public static void test5(){

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

        System.out.println("*********************");

        Comparator<Integer> com2 = (o1, o2)-> {
            System.out.println(o1);
            System.out.println(o2);
            return o1.compareTo(o2);
        };
        System.out.println(com2.compare(23, 56));
    }

    //语法格式六:当Lambda体只有一条语句时,return与大括号可以一起省略(省略大括号时,return关键字也必须省略)
    public static void test6(){

        Comparator<Integer> com1 = (o1, o2)-> {
            return o1.compareTo(o2);
        };
        System.out.println(com1.compare(23, 56));

        Comparator<Integer> com2 = (o1, o2)-> o1.compareTo(o2);
        System.out.println(com2.compare(23, 56));

    }
}


总结

  • ->左边: lambda形参列表的参数类型可以省略(类型推断);如果Lambda形参列表只有一一个参数,其括号可以省略。
  • ->右边: lambda体应该使用一对{} 包裹;如果Lambda体只有一条执行语句(可能是return语句),则可以将return关键字与大括号可以一起省略(省略大括号时,return关键字也必须省略)

本文地址:https://blog.csdn.net/HC199854/article/details/107671960

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网