ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA8新特性之lambda表达式

2022-07-04 21:35:24  阅读:148  来源: 互联网

标签:o2 System public o1 println lambda JAVA8 表达式 out


Lambda表达式的使用

  1. ()->{};
    ()里面放的是参数,{}里放的是代码体
  2. -> 左边: lambda形参列表的参数类型可以省略(类型推断)
    -> 右边: 代码体使用{}包裹,如果代码体只有一句可执行语句,那么大括号可以省略,return也可以省略
  3. Lambda实质上还是一个接口的实例,要求是函数式接口(只有一个方法的接口)
import org.testng.annotations.Test;

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

public class LambdaDemo {

    /**
     * 没有参数,没有返回值的lambda表达式
     * 表达式本质上还是接口的对象
     */
    @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("没有参数和返回值1");
        };
        runnable1.run();

    }

    /**
     * 有一个参数,没有返回值
     */
    @Test
    public void test2() {

        Consumer<String> consumer = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println("有一个参数是" + s);
            }
        };
        consumer.accept("demo");

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

        Consumer<String> consumer1 = (String s) -> {
            System.out.println("有一个参数是2222 " + s);
        };
        consumer1.accept("111");

    }

    /**
     * 可以省略参数类型(类型推断),如果只有一个参数,那么参数的括号可以省略
     */
    @Test
    public void test3() {

        Consumer<String> consumer = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println("有一个参数是" + s);
            }
        };
        consumer.accept("demo");

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

        Consumer<String> consumer1 = (s) -> {
            System.out.println("参数的类型省略 " + s);
        };
        consumer1.accept("111");

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

        Consumer<String> consumer2 = s -> {
            System.out.println("参数的括号省略 " + s);
        };
        consumer2.accept("111");
    }


    /**
     * 多个参数,有返回值
     */
    @Test
    public void test4() {
        Comparator<Integer> comparator = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                System.out.println(o1);
                System.out.println(o2);
                return Integer.compare(o1, o2);
            }
        };

        System.out.println(comparator.compare(10, 11));

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

        Comparator<Integer> comparator1 = (o1, o2) -> {
            System.out.println(o1);
            System.out.println(o2);
            return Integer.compare(o1, o2);
        };
        System.out.println(comparator1.compare(11, 10));

    }


    /**
     * 函数体只有一句,可以省略return,可以省略函数体的大括号
     */
    @Test
    public void test5() {
        Comparator<Integer> comparator = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(o1, o2);
            }
        };

        System.out.println(comparator.compare(10, 11));

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

        Comparator<Integer> comparator1 = (o1, o2) -> Integer.compare(o1, o2);
        System.out.println(comparator1.compare(11, 10));

    }


}



标签:o2,System,public,o1,println,lambda,JAVA8,表达式,out
来源: https://www.cnblogs.com/yan061/p/16444473.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有