Java是一种计算机编程语言,可用于编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等,是IT开发行业中最受欢迎的编程语言之一。想要学好Java必须要一步一个脚印打好基础、积攒实战经验,接下来小千就给大家分享Java函数式编程知识。

什么是函数式编程?

函数式编程是Java8的一大特色,也就是将函数作为一个参数传递给指定方法。函数式编程的目的是使用函数来抽象作用在数据之上的控制流和操作,从而在系统中消除副作用并减少对状态的改变。

函数式编程具有两大优点:1)无副作用。指所有功能返回一个新的值,没有其它行为,不得修改外部变更的值;2)不变性。只能修改本地变更,除此之外,它引用的对象应该是不可修改的对象(final类型)。

有部分同学分不清命令式编程、声明式编程和函数式编程,其实三者很好区分:

命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。

声明式编程是以数据结构的形式来表达程序执行的逻辑。它的主要思想是告诉计算机应该做什么,但不指定具体要怎么做,SQL语句就是最明显的一种声明式编程的例子。

函数式编程和声明式编程是有所关联的,他们都只关注做什么而不是怎么做。但函数式编程不仅仅局限于声明式编程,函数式编程最重要的特点是“函数第一位”。

函数式编程涉及的概念知识

声明式编程

函数式编程属于声明式编程范式:这种范式会描述一系列的操作,但并不会暴露它们是如何实现的或是数据流如何传过它们。声明式是将程序的描述与求值分离开来,它关注如何用各种表达式来描述程序逻辑,而不一定要指明其控制流或状态关系的变化。

纯函数

纯函数指没有副作用的函数。使用纯函数的代码绝不会更改或破坏全局状态,有助于提高代码的可测试性和可维护性。纯函数有两个特征:1)仅取决于提供的输入,而不依赖于任何在函数求值或调用间隔时可能变化的隐藏状态和外部状态。2)不会造成超出作用域的变化,例如修改全局变量或引用传递的参数。

引用透明

引用透明是定义一个纯函数较为正确的方法。纯度在这个意义上表面一个函数的参数和返回值之间映射的纯的关系。如果一个函数对于相同的输入始终产生相同的结果,那么我们就说它是引用透明。

不可变数据

不可变数据是指那些创建后不能更改的数据。与许多其他语言一样,JavaScript 里有一些基本类型(String,Number 等)从本质上是不可变的,但是对象就是在任意的地方可变。

函数式编程大量使用函数,减少了代码的重复,不仅开发速度快更方便管理,是一个优秀的Java开发人员必须要掌握的技能之一。

本文来自千锋教育,转载请注明出处。

Java函数式编程知识分享!相关推荐

  1. java全局变量怎么定义_Java开发知识点:如何理解Java函数式编程?

    Java是一种计算机编程语言,可用于编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等,是IT开发行业中最受欢迎的编程语言之一.想要学好Java必须要一步一个脚印打好基础.积攒实战经验 ...

  2. Java 函数式编程和 lambda 表达式

    为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论.函数式与命令式编程的区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉代码要怎么做.说白了,函数式编程是基于 ...

  3. java 函数式编程 示例_功能Java示例 第8部分–更多纯函数

    java 函数式编程 示例 这是第8部分,该系列的最后一部分称为"示例功能Java". 我在本系列的每个部分中开发的示例是某种"提要处理程序",用于处理文档. ...

  4. Java 函数式编程入门

    Java 函数式编程入门 函数式编程实战 改进 完整代码   像 JavaScript 这种语言很早就支持闭包了,虽然 C++ 很早就有了函数指针,Java 也很早就提供了反射中的 Method 类, ...

  5. 《深入理解Java函数式编程》系列文章

    Introduction 本系列文将帮助你理解Java函数式编程的用法.原理. 本文受启发于JavaOne 2016关于Lambda表达式的相关主题演讲Lambdas and Functional P ...

  6. java 函数式编程 示例_功能Java示例 第1部分–从命令式到声明式

    java 函数式编程 示例 功能编程(FP)的目的是避免重新分配变量,避免可变的数据结构,避免状态并全程支持函数. 如果将功能性技术应用于日常Java代码,我们可以从FP中学到什么? 在这个名为&qu ...

  7. java 函数式编程_Java函数式编程:Javaslang入门

    java 函数式编程 Java是一门古老的语言,并且该领域中有很多新手在他们自己的领域(JVM)上挑战Java. 但是Java 8到来并带来了一些有趣的功能. 这些有趣的功能使编写新的惊人框架(例如S ...

  8. java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用

    java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用

  9. Java函数式编程整理

    2019独角兽企业重金招聘Python工程师标准>>> Java函数式编程的第一个作用是可以将匿名类改写成函数式表达式,由系统自动判断类型 我们先定义一个接口 public inte ...

最新文章

  1. 网络流24题(2) P4014 分配问题
  2. Microsoft R 和 Open Source R,哪一个才最适合你?
  3. 2015华为(北京)架构师创意课程大纲
  4. 配置phpmyadmin连接远程 MySQL数据库
  5. VTK修炼之道53:图形基本操作进阶_多分辨率策略(模型细化的三种方法)
  6. Java根据文件头文件信息判断文件类型
  7. eclipse +python 修改 各种颜色 +字体
  8. 网络营销教程—SEO 第八章 内部链接的优化操作
  9. Android 系统(91)---Android 平台调试
  10. 【操作系统】—内存的基本知识
  11. 深度学习 + OpenCV,Python实现实时视频目标检测
  12. 转载js实现打印功能
  13. 计算机二级c语言考试的步骤,计算机二级C语言考试技巧
  14. vb窗体程序设计实例
  15. Silverlight实现文件的下载[很简单]
  16. 一文看懂互联网支付系统整体架构
  17. 静态单赋值(一)—gcc中的支配树
  18. 同是办公软件,wps和office有什么区别?
  19. 7个技巧帮助你进行更有吸引力的脉动/脉搏调查
  20. windows10/11_远程桌面连接mstsc(局域网)/CLI获取当前主机名/用户名/修改windows主机名

热门文章

  1. 实录分享 | 计算未来轻沙龙:深度学习工具专场(PPT下载)
  2. GAN做图像翻译的一点总结
  3. 5.3 使用tensorflow搭建GoogLeNet网络 笔记
  4. Pytorch的网络结构可视化:Netron与TensorBoardX
  5. Oracle MD5加密
  6. mybatis-plus设置查询返回的类型是map
  7. Java——将JSONP返回的结果转化为Java对象
  8. 2019牛客暑期多校训练营(第七场)
  9. count 数字计数
  10. Python基础day04【字典(介绍、定义与访问、操作数据、常见操作)】