zoukankan      html  css  js  c++  java
  • Java第二十八天,Lambda表达式

    一、函数式编程

    1.什么是函数式编程

    函数式编程是种编程方式,是一种编程的思维,它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。它的地位等同于面向对象,面向过程,它将电脑运算视为函数的计算

    2.函数式编程的特点

    (1)可以把函数作为参数传递给另一个函数,可以返回一个函数。从程序员的角度看,就是可以接受函数当作输入(参数)和输出(返回值)

    (2)闭包:由函数(环境)及其相关的引用环境组合而成的实体(闭包=函数+引用环境),在函数式编程中充当着

    详解:当内嵌函数引用到该函数作用域外的的变量时,将会把定义时涉及到的引用环境和函数体打包成一个整体(闭包)返回实例,这些实例之间是隔离的,分别包含调用时不同的引用环境现场

    (3)高阶函数

    在函数式编程中,函数是一阶值,函数可以作为另一个函数的参数或返回值,可以赋给一个变量。函数可以欠嵌套定义,即在一个函数内部可以定义另一个函数

    (4)函数是“一等公民”

    即函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值

    (5)不修改状态、没有副作用

    函数要保持独立,不包含任何赋值语句,不修改系统变量,所有功能就是返回一个新的值,没有其他行为

    3.标准格式

    由以下三部分组成:

    • (参数1,参数2,参数3,......)
    • ->
    • { 代码块 }

    注意事项:

    (1)第一部分中参数可有可无,多个参数用逗号隔开;参数类型可省略;如果参数只有一个,则 () 可以省略

    (2)如果第三部分只有一行代码,无论是否有返回值,则可以省略 '{}'   'return'   ';'    。并且这三部分要么一个都不省略,要么一起省略

    4.实战使用

    (1)Lambda替代多线程匿名内部类

    public class Test {
    
        public static void main(String[] args) {
    
            new Thread(()->{
                System.out.println("开启新线程");
            }).start();
        }
    }
    

    (2)Lambda替代自定义匿名内部类

    ①首先定义一个电脑类

    public interface Computer {
        public abstract void powerUp();
    }

    ①然后定义一个用户类

    public class person {
    
        public static void opComputer(Computer computer){
            computer.powerUp();
        }
    
        public static void main(String[] args) {
            opComputer(()->{
                System.out.println("The computer is running!");
            });
        }
    }

    (3)Lambda替代集合、数组匿名内部类

    import java.util.Arrays;
    
    public class mySort {
        public static void main(String[] args) {
    
            Integer[] list = {1,9,5,3,7,4,6,8,2};
            Arrays.sort(list,(Integer x,Integer y)->{
                return x - y;
            });
    
            for (Integer integer : list) {
                System.out.println(integer);
            }
        }
    }

    (4)省略写法

    import java.util.Arrays;
    
    public class mySort {
        public static void main(String[] args) {
    
            Integer[] list = {1,9,5,3,7,4,6,8,2};
            Arrays.sort(list,(x,y)-> x - y);
    
            for (Integer integer : list) {
                System.out.println(integer);
            }
        }
    }

  • 相关阅读:
    理论四:接口隔离原则有哪三种应用?原则中的“接口”该如何理解?
    gunicorn 配置文件
    转载——gunicorn的实践经验
    pympler 模块
    类属性的名称空间
    django——实现事务
    django-apscheduler报错——Run time of job …… next run at: ……)” was missed by
    阿里云连接数据库服务
    第十三周总结
    IDEA常用模板
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700449.html
Copyright © 2011-2022 走看看