Java技術分享之函數語言程式設計
Java是一種計算機程式語言,可用於編寫桌面應用程式、Web應用程式、分散式系統和嵌入式系統應用程式等,是IT開發行業中最受歡迎的程式語言之一。想要學好Java必須要一步一個腳印打好基礎、積攢實戰經驗,接下來小千就給大家分享Java函數語言程式設計知識。
什麼是函數語言程式設計?
函數語言程式設計是Java8的一大特色,也就是將函式作為一個引數傳遞給指定方法。函數語言程式設計的目的是使用函式來抽象作用在資料之上的控制流和操作,從而在系統中消除副作用並減少對狀態的改變。
函數語言程式設計具有兩大優點:1)無副作用。指所有功能返回一個新的值,沒有其它行為,不得修改外部變更的值;2)不變性。只能修改本地變更,除此之外,它引用的物件應該是不可修改的物件(final型別)。
有部分同學分不清指令式程式設計、宣告式程式設計和函數語言程式設計,其實三者很好區分:
指令式程式設計的主要思想是關注計算機執行的步驟,即一步一步告訴計算機先做什麼再做什麼。
宣告式程式設計是以資料結構的形式來表達程式執行的邏輯。它的主要思想是告訴計算機應該做什麼,但不指定具體要怎麼做,SQL語句就是最明顯的一種宣告式程式設計的例子。
函數語言程式設計和宣告式程式設計是有所關聯的,他們都只關注做什麼而不是怎麼做。但函數語言程式設計不僅僅侷限於宣告式程式設計,函數語言程式設計最重要的特點是“函式第一位”。
函數語言程式設計涉及的概念知識
宣告式程式設計
函數語言程式設計屬於宣告式程式設計正規化:這種正規化會描述一系列的操作,但並不會暴露它們是如何實現的或是資料流如何傳過它們。宣告式是將程式的描述與求值分離開來,它關注如何用各種表示式來描述程式邏輯,而不一定要指明其控制流或狀態關係的變化。
純函式
純函式指沒有副作用的函式。使用純函式的程式碼絕不會更改或破壞全域性狀態,有助於提高程式碼的可測試性和可維護性。純函式有兩個特徵:1)僅取決於提供的輸入,而不依賴於任何在函式求值或呼叫間隔時可能變化的隱藏狀態和外部狀態。2)不會造成超出作用域的變化,例如修改全域性變數或引用傳遞的引數。
引用透明
引用透明是定義一個純函式較為正確的方法。純度在這個意義上表面一個函式的引數和返回值之間對映的純的關係。如果一個函式對於相同的輸入始終產生相同的結果,那麼我們就說它是引用透明。
不可變資料
不可變資料是指那些建立後不能更改的資料。與許多其他語言一樣,JavaScript 裡有一些基本型別(String,Number 等)從本質上是不可變的,但是物件就是在任意的地方可變。
函數語言程式設計大量使用函式,減少了程式碼的重複,不僅開發速度快更方便管理,是一個優秀的Java開發人員必須要掌握的技能之一。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2771610/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java技術分享之函數語言程式設計!Java函數程式設計
- Java函數語言程式設計知識分享!Java函數程式設計
- Java 函數語言程式設計Java函數程式設計
- JavaScript函數語言程式設計之為什麼要函數語言程式設計(非嚴謹技術層面的扯淡)JavaScript函數程式設計
- Python函數語言程式設計術語大全Python函數程式設計
- 好程式設計師Python培訓分享函數語言程式設計之匿名函式程式設計師Python函數函式
- 函數語言程式設計函數程式設計
- Scala 函數語言程式設計(一) 什麼是函數語言程式設計?函數程式設計
- Java8的函數語言程式設計Java函數程式設計
- Java 函數語言程式設計(三)流(Stream)Java函數程式設計
- Java 函數語言程式設計的前生今世Java函數程式設計
- JavaScript函數語言程式設計之副作用JavaScript函數程式設計
- Python學習之函數語言程式設計Python函數程式設計
- 函數語言程式設計,真香函數程式設計
- python函數語言程式設計Python函數程式設計
- javascript函數語言程式設計JavaScript函數程式設計
- JavaScript 函數語言程式設計JavaScript函數程式設計
- Java 函數語言程式設計(一)初識篇Java函數程式設計
- Java 函數語言程式設計(二)Lambda表示式Java函數程式設計
- Java8函數語言程式設計應用Java函數程式設計
- 重識Java8函數語言程式設計Java函數程式設計
- Java8 新特性 —— 函數語言程式設計Java函數程式設計
- 淺談函數語言程式設計與 Java Stream函數程式設計Java
- 函數語言程式設計之Currying&partial application函數程式設計APP
- 函數語言程式設計之Promise的奇幻漂流函數程式設計Promise
- JavaScript函數語言程式設計之pointfree與宣告式程式設計JavaScript函數程式設計
- python函數語言程式設計一Python函數程式設計
- python函數語言程式設計二Python函數程式設計
- RAC的函數語言程式設計函數程式設計
- JavaScript 函數語言程式設計(一)JavaScript函數程式設計
- JavaScript 函數語言程式設計(三)JavaScript函數程式設計
- 函數語言程式設計前菜函數程式設計
- 函數語言程式設計雜談函數程式設計
- 初見函數語言程式設計函數程式設計
- JavaScript 函數語言程式設計(二)JavaScript函數程式設計
- [譯]通往 Java 函數語言程式設計的捷徑Java函數程式設計
- Java中函數語言程式設計Monad概念介紹Java函數程式設計
- 隨便聊聊 Java 8 的函數語言程式設計Java函數程式設計