当前位置:  首页>> 技术小册>> Java语言基础16-JDK8 新特性

  • 在数学中,函数(y = f(x))就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。编程中的函数,也有类似的概念,你调用我的时候,给我实参为形参赋值,然后通过运行方法体,给你一个返回结果。对于调用者来说,关注的是这个方法具备什么样的功能。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法— 强调做什么,而不是以什么形式做 。

  • 面向对象思想:做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情。

  • 函数式编程思想:只要能获取到结果,谁去做不重要,重视的是结果,不是过程。

  • JDK 8 引入了 Lambda 表示式之后,Java 也开始支持函数式编程。

  • Lambda 表达式不是 Java 最早使用的,很多语言支持很早就支持 Lambda ,例如:C++ 、C# 、Python 、Scala 等。如果有 JavaScript 或 Python 的语言基础,对理解 Lambda 表达式有很大的帮助,可以说 Lambda 表达式其实就是实现 SAM(Single Abstract Method,即接口中只能有一个抽象方法)接口的语法糖,使得 Java 也算是支持函数式编程的语言。Lambda 写得好可以极大的减少代码冗余,同时可读性也好过冗余的匿名内部类。

注意:

  • “语法糖”是指使用更加方便,但是原理不变的代码语法。例如在遍历集合时使用的 for-each 语法,其实
    底层的实现原理仍然是迭代器,这便是“语法糖”。
  • 从应用层面来讲,Java 中的 Lambda 可以被当做是匿名内部类的“语法糖”,但是二者在原理上是不同的。

该分类下的相关小册推荐: