
1. Scala
1.1. 混合了面向物件和函式式編程的語言
1.2. 直接使用任何一個Java類別庫
1.3. 宣告非遞回的方法時,不需要顯式地回傳型別
1.3.1. 會自動地替你推斷生成一個
1.4. 字串插值
1.4.1. 在字串的字面量中內嵌變數和運算式
1.5. 以使用val關鍵字替換var
1.5.1. 關鍵字val表明變數是只讀的,并由此不能被賦值
1.5.2. 關鍵字var表明變數是可以讀寫的
1.6. 集合
1.6.1. 在默認情況下都是不可變的
1.6.2. 默認都是持久化的
1.6.3. 并未強制你使用不可變集合,它只是讓你能更輕松地在你的代碼中應用不可變原則
1.6.4. scala.collection.mutable包中也包含了集合的可變版本
1.6.5. 不可修改集合僅僅是對可變集合進行了一層封裝
1.6.6. 不可變(immutable)集合確保了該集合在任何時候都不會發生變化,無論有多少個變數同時指向它
1.6.7. 下劃線是一種占位符
1.7. 元組
1.7.1. 元組字面量
1.7.2. 通過存取器(accessor)_1、_2(從1開始的一個序列)訪問元組中的元素
1.8. Stream
1.8.1. 可以記錄它曾經計算出的值,所以之前的元素可以隨時進行訪問
1.8.2. 需要存盤這些額外的屬性
1.8.2.1. Scala版本的Stream記憶體的使用效率變低了
1.8.2.2. 需要在記憶體“記錄下來”(即進行快取)
1.9. Option
1.9.1. 應該盡量地用它替代null,避免發生空指標例外
1.10. 函式
1.10.1. 函式型別
1.10.1.1. 一種符號,表示了在函式介面中宣告的抽象方法的簽名
1.10.1.2. 一種語法糖
1.10.2. 能夠讀寫非本地變數的匿名函式
1.10.2.1. Java中的Lambda運算式無法對非本地變數進行寫操作
1.10.3. 對柯里化的支持
1.10.3.1. 可以將一個接受多個引數的函式拆分成一系列接受部分引數的函式
1.10.3.2. 使用語法糖呼叫apply方法
1.10.4. 閉包是一個函式實體,它可以不受限制地訪問該函式的非本地變數
1.11. 類
1.11.1. 構造器、getter方法以及setter方法都能隱式地生成
1.12. trait
1.12.1. 有助于抽象物件的特性
1.12.1.1. 一種同時包含了欄位和默認方法的介面
1.12.1.2. 為實作Java中的介面而設計的替代品
1.12.2. 可以定義抽象方法
1.12.3. 可以定義帶有默認實作的方法
1.12.4. 支持Java中介面那樣的多繼承
1.12.5. 對狀態的多繼承
1.12.5.1. java不可以
1.13. 對尾部呼叫進行了優化
2. 未來
2.1. 宣告處型變
2.1.1. declaration-site variance
2.2. 模式匹配
2.2.1. 傳統面向物件的設計不推薦大家使用switch,它更推崇使用設計模式,比如訪問者模式,依賴資料型別的控制流是由方法分發器而不是switch陳述句選擇的
2.2.2. 函式式程式設計語言來說,基于資料型別的模式匹配通常是設計程式最便捷的方式
2.3. 具化泛型
2.3.1. reified generic
2.3.2. 泛型多型的消除模式
2.3.2.1. erasure model of generic polymorphism
2.3.3. 泛型多型的具化模式
2.3.3.1. reified model of generic polymorphism
2.4. 基本型別特化和泛型
2.5. 對不變性的更深層支持
2.5.1. 值型別
2.5.1.1. 由于沒有參考特征,因此占用的存盤空間更少
2.5.2. 值物件
2.5.2.1. 既非基本型別又非物件型別
3. 回顧
3.1. 行為引數化(Lambda以及方法參考)
3.2. 流
3.2.1. 資料集越大,減少遍歷資料集的次數就越重要
3.3. CompletableFuture
3.3.1. 以函式式程式設計的方式對Future的通用模式進行細粒度的控制,幫助你避免采用命令式編程時常見的模板代碼
3.3.2. 提供了thenCompose、thenCombine和allOf這樣的操作
3.4. Optional
3.5. Flow API
3.5.1. Java 9對反應式流進行了標準化
3.5.2. 基于拉模式的反應式背壓協議能避免慢速消費者被一個或多個快速生產者壓垮
3.6. 默認方法
3.7. Java 9的模塊系統
3.7.1. Java 9對后向兼容性的損害也是最大的
3.7.2. 不采用模塊系統
3.7.2.1. 惡意代碼可能直接訪問你模塊的關鍵部分,直接繞開它所有的安全檢查
3.7.2.2. 無法避免暴露運行于同一環境中安全相關的方法
3.7.3. 優勢
3.7.3.1. 可靠的配置
3.7.3.1.1. 顯式宣告模塊的依賴性,錯誤可以在很早的時候,就借由編譯檢測到
3.7.3.2. 嚴格的封裝
3.7.3.2.1. 對模塊的公有訪問、每個模塊的訪問邊界以及內部實作進行區分
3.7.3.3. 改進的安全性
3.7.3.4. 更好的性能
3.7.3.4.1. 一個類只能被有限的組件訪問
3.7.3.4.2. 不是任何類都能在運行時加載它
3.7.3.5. 擴展性
3.7.3.5.1. 將Java SE平臺解構成更細粒度的組成部分
3.7.3.5.2. 只執行運行你的應用所需要的特性
3.8. Java 10的區域變數型別推斷
3.8.1. 如果型別只有唯一的識別符號,那么采用型別推斷能帶來很多好處,其中最主要的優勢之一是,當用一種型別替換另一種型別后,不用重新編輯修改代碼了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/544841.html
標籤:其他
