Java技术分享之函数式编程
Posted 程序员的小傲娇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java技术分享之函数式编程相关的知识,希望对你有一定的参考价值。
Java是一种计算机编程语言,可用于编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等,是IT开发行业中最受欢迎的编程语言之一。想要学好Java必须要一步一个脚印打好基础、积攒实战经验,接下来小千就给大家分享Java函数式编程知识。
什么是函数式编程?
函数式编程是Java8的一大特色,也就是将函数作为一个参数传递给指定方法。函数式编程的目的是使用函数来抽象作用在数据之上的控制流和操作,从而在系统中消除副作用并减少对状态的改变。
函数式编程具有两大优点:1)无副作用。指所有功能返回一个新的值,没有其它行为,不得修改外部变更的值;2)不变性。只能修改本地变更,除此之外,它引用的对象应该是不可修改的对象(final类型)。
有部分同学分不清命令式编程、声明式编程和函数式编程,其实三者很好区分:
命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。
声明式编程是以数据结构的形式来表达程序执行的逻辑。它的主要思想是告诉计算机应该做什么,但不指定具体要怎么做,SQL语句就是最明显的一种声明式编程的例子。
函数式编程和声明式编程是有所关联的,他们都只关注做什么而不是怎么做。但函数式编程不仅仅局限于声明式编程,函数式编程最重要的特点是“函数第一位”。
函数式编程涉及的概念知识
声明式编程
函数式编程属于声明式编程范式:这种范式会描述一系列的操作,但并不会暴露它们是如何实现的或是数据流如何传过它们。声明式是将程序的描述与求值分离开来,它关注如何用各种表达式来描述程序逻辑,而不一定要指明其控制流或状态关系的变化。
纯函数
纯函数指没有副作用的函数。使用纯函数的代码绝不会更改或破坏全局状态,有助于提高代码的可测试性和可维护性。纯函数有两个特征:1)仅取决于提供的输入,而不依赖于任何在函数求值或调用间隔时可能变化的隐藏状态和外部状态。2)不会造成超出作用域的变化,例如修改全局变量或引用传递的参数。
引用透明
引用透明是定义一个纯函数较为正确的方法。纯度在这个意义上表面一个函数的参数和返回值之间映射的纯的关系。如果一个函数对于相同的输入始终产生相同的结果,那么我们就说它是引用透明。
不可变数据
不可变数据是指那些创建后不能更改的数据。与许多其他语言一样,javascript 里有一些基本类型(String,Number 等)从本质上是不可变的,但是对象就是在任意的地方可变。
函数式编程大量使用函数,减少了代码的重复,不仅开发速度快更方便管理,是一个优秀的Java开发人员必须要掌握的技能之一。
本文来自千锋教育,转载请注明出处。
以上是关于Java技术分享之函数式编程的主要内容,如果未能解决你的问题,请参考以下文章
java之Lambda函数式编程最佳应用举例,链式语法「真干货来拿走」