栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

暑期JAVA学习(四)Lambda表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

暑期JAVA学习(四)Lambda表达式

Lambda表达式 (一)Lambda概述 Lambda概述

●Lambda表达式是JDK8开始后的一种新语法形式。
●作用:简化匿名内部类的代码写法。

Lambda表达式的简化格式

(匿名内部类被重写方法的形参列表) ->{
被重写方法的方法体代码。
}
注: ->是语法形式,无实际含义

注意: Lambda表达式只能简化函数式接口的匿名内部类的写法形式

什么是函数式接口?

●首先必须是接口、其次接口中有且仅有一个抽象方法的形式
●通常我们会在接口.上加上一个@FunctionalInterface注解,标记该接口必须是满足函数式接口。

        //目标:学会使用Lambda的标准格式简化匿名内部类的代码形式
        // Lambda只能简化接口中只有一个抽象方法的匿名内部类形式
        // 未简化
//        Swimming s1 = new Swimming() {
//            @Override
//            public void swim() {
//                System.out.println("小王游泳‍");
//            }
//        };

        //简化
        Swimming s1 = () -> {
            System.out.println("小王游泳‍");
        };
        go(s1);

        //未简化
//        System.out.println("--------------------------");
//        go(new Swimming() {
//            @Override
//            public void swim() {
//                System.out.println("小刘游泳‍");
//            }
//        });

        //简化
        go(() ->{
            System.out.println("小刘游泳");
        });

    }
        public static void go (Swimming s){
            System.out.println("开始");
            s.swim();
            System.out.println("结束");
        }
    @FunctionalInterface//一旦加上这个注解必须是函数式接口,里面只能有一个抽象方法
    interface Swimming {
        void swim();
    }

总结

1、Lambda表达式的基本作用?
●简化函数式接口的匿名内部类的写法。

2、Lambda表达式有什么使用前提?
●必须是接口的匿名内部类,接口中只能有一个抽象方法

3、Lambda的好处?
●Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使Java语言表达能力得到了提升。

(二)Lambda实战-简化常见函数式接口

1、Lambda表达式简化Comparator接口的匿名形式

        Integer[] age1 ={12,34,3,56,42};
        
//        Arrays.sort(age1, new Comparator() {
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                return -(o1 - o2);//降序
//            }
//        });

        Arrays.sort(age1,(Integer o1, Integer o2) -> {
                return -(o1 - o2);//降序
        });
        System.out.println(Arrays.toString(age1));

2、Lambda表达式简化按钮监听器ActionListener的匿名内部类形式

(三)Lambda表达式的省略规则(进一步在Lambda表达式的基础上继续简化)

●参数类型可以省略不写。
●如果只有一 个参数,参数类型可以省略,同时()也可以省略。
●如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号!
●如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不写,同时也必须省略";"不写

        Integer[] age1 ={12,34,3,56,42};
        
//        Arrays.sort(age1, new Comparator() {
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                return -(o1 - o2);//降序
//            }
//        });

//        Arrays.sort(age1,(Integer o1, Integer o2) -> {
//                return -(o1 - o2);//降序
//        });
//        System.out.println(Arrays.toString(age1));

//        Arrays.sort(age1,(o1,o2) -> {
//            return -(o1 - o2);//降序
//        });

        Arrays.sort(age1,(o1,o2) -> -(o1 - o2));
//        Swimming s1 = () -> {
//            System.out.println("小王游泳‍");
//        };
        
        Swimming s1 = () -> System.out.println("小王游泳‍");
        //未简化
//        System.out.println("--------------------------");
//        go(new Swimming() {
//            @Override
//            public void swim() {
//                System.out.println("小刘游泳‍");
//            }
//        });

        //简化
//        go(() ->{
//            System.out.println("小刘游泳");
//        });

        go(() -> System.out.println("小刘游泳"));
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000029.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号