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

Java函数式编程学习笔记

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

Java函数式编程学习笔记

什么是Lambda表达式

可以理解为一种匿名函数的代替,lambda允许将函数作为一个方法的参数传递,从而简化代码编写。

什么是函数式接口

lambda表达式需要函数式接口的支持

所谓函数式接口,是指只有一个抽象方法

另外JDK8也提供了一个注解,帮助我们编译时检查语法是否符合@FunctionInterface

Lambda表达式的基本语法

函数式接口  变量名  = (参数1,参数2...)->{

        方法体

}

 lambda应用实例1
public class Demo {
    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("run");
            }
        };
        new Thread(runnable).start();

        
        //第一种方式,主要内容就只有参数列表和方法体了
        Runnable runnable1 = ()->{
            System.out.println("hello");
        };
        new Thread(runnable1).start();

        //第二种方式
        new Thread(()->{
            System.out.println("hello xz");
        }).start();

        //第三种方式,还可以更省,只有一条语句时,{}也可以省去
        new Thread(()-> System.out.println("hi ")).start();
    }
}

代码简述:lambda基本语法

lambda应用实例2
public class Demo2 {
    public static void main(String[] args) {
        //传统方式用匿名内部类创建比较器
        Comparator comparator = new Comparator() {
            @Override
            public int compare(String o1, String o2) {
                return o1.length()-o2.length();
            }
        };
        TreeSet treeSet = new TreeSet<>(comparator);
        
        //lambda表达式,这里o1,o2也不用写类型了,写类型是多余的,因为在前面泛型里面写了String
        Comparator comparator1 = (o1,o2)-> o1.length()-o2.length();
        TreeSet treeSet1 = new TreeSet<>(comparator1);

        //利用lambda表达式的更简单写法
        TreeSet treeSet2 = new TreeSet<>((o1,o2)->o1.length()-o2.length());

        
    }
}
lambda表达式总结:

lambda引入了新的操作符:->将表达式分为了两个部分

左侧:(参数1,参数2...)表示方法的参数列表

右侧:{}内部是方法体

1.形参列表的数据类型会自动判断,因为有泛型指明

2.如果形参列表为空,只保留()

3.如果形参只有一个,()可以省略,只需要参数的名称即可

4.如果执行语句只有一句,则无返回值,{}可以省略,若有返回值,则若想省去{},则必须同时省略return,且执行语句保证只有一句

5.lambda不会生成一个单独的内部类文件

6.lambda表达式若访问了局部变量,则局部变量必须是final的,若是局部变量没有加final关键字,系统会自动添加,此后修改局部变量会报错,这一点匿名内部类的使用规则

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/605947.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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