ICode9

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

Java8的新特性(Lambda表达式)重点

2021-03-01 16:58:43  阅读:206  来源: 互联网

标签:System o2 public o1 println Lambda Java8 表达式 out


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

使用举例

public class LambdaTest {

    /**
     * @Description 不使用Lambda
     */
    public static void test1(){
        Runnable r1 = new Runnable() {
            @Override
            public void run() {
                System.out.println("我要上春晚");
            }
        };
        r1.run();
        
        System.out.println("******************************");
        Comparator<Integer> com1 = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(o1,o2);
            }
        };
        System.out.println(com1.compare(12,21));
    }

    /**
     * @Description 使用Lambda
     */
    public static void test2(){
        Runnable r1 = () -> System.out.println("我要上春晚2");
        r1.run();
        
        System.out.println("******************************");
        Comparator<Integer> com1 = (o1,o2) -> Integer.compare(o1,o2);
        System.out.println(com1.compare(21,12));

        System.out.println("*******方法引用***************");
        Comparator<Integer> com2 = Integer :: compare;
        System.out.println(com2.compare(21,12));
    }

}

说明

代码块:(o1,o2) -> Integer.compare(o1,o2);
格式: ->: lombda操作符
      ->左边:lombda形参列表(即接口中抽象方法的形参列表)
      ->右边:lombda体(即重写的抽象方法的方法体)
lombda表达式的使用:(分为6种情况)
    格式一:无参、无返回值
    Runnable r1 = () -> System.out.println("我要上春晚2");
    格式二:需要一个参数、无返回值
    Consumer<String> con1 = (String s) -> System.out.println(s);
    格式三:需要一个参数、无返回值,类型可以省略
    Consumer<String> con1 = (s) -> System.out.println(s);
    格式四:需要一个参数、无返回值,参数小括号可以省略
    Consumer<String> con2 = s -> System.out.println(s);
    格式五:两个或以上参数、多条执行语句,有返回值
    Comparator<Integer> com2 = (o1,o2) -> {
        System.out.println(o1);
        return Integer.compare(o1,o2);
    };
    格式六:只有一条执行语句,大括号和return都可以省略
    Comparator<Integer> com2 = (o1,o2) -> Integer.compare(o1,o2);
lombda表达式的本质:作为函数式接口的实例

Lombda表达式的六种使用情况举例

   /** @Description 格式一:无参、无返回值 */
    public static void geshi1(){
        Runnable r1 = new Runnable() {
            @Override
            public void run() {
                System.out.println("我要上春晚");
            }
        };
        //使用lombda表达式
        Runnable r2 = () -> System.out.println("我要上春晚2");
    }

    /** @Description 格式二:需要一个参数、无返回值 */
    public static void geshi2(){
        Consumer<String> con = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        };
        //使用lombda表达式
        Consumer<String> con1 = (String s) -> System.out.println(s);
    }

    /** @Description 格式三:需要一个参数、无返回值,类型可以省略 */
    public static void geshi3(){
        //使用lombda表达式,不省略类型
        Consumer<String> con1 = (String s) -> {
            System.out.println(s);
        };
        //使用lombda表达式,省略类型即类型推断
        Consumer<String> con2 = (s) -> System.out.println(s);
    }

    /** @Description 格式四:需要一个参数、无返回值,参数小括号可以省略 */
    public static void geshi4(){
        //使用lombda表达式
        Consumer<String> con2 = s -> System.out.println(s);
    }

    /** @Description 格式五:两个或以上参数、多条执行语句,有返回值 */
    public static void geshi5(){
        Comparator<Integer> com1 = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                System.out.println(o1);
                return Integer.compare(o1,o2);
            }
        };
        //使用lombda表达式
        Comparator<Integer> com2 = (o1,o2) -> {
            System.out.println(o1);
            return Integer.compare(o1,o2);
        };
    }

    /** @Description 格式六:只有一条执行语句,大括号和return都可以省略 */
    public static void geshi6(){
        //使用lombda表达式
        Comparator<Integer> com2 = (o1,o2) -> Integer.compare(o1,o2);
    }

标签:System,o2,public,o1,println,Lambda,Java8,表达式,out
来源: https://blog.csdn.net/fuu123f/article/details/114266211

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

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

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

ICode9版权所有