開始閱讀Kotlin官方文檔。先上文檔目錄。有些內容還未閱讀,有些目錄標目翻譯還需琢磨琢磨。後續再將具體內容的連接逐步加上。html
文檔連接:https://kotlinlang.org/docs/kotlin-docs.pdfjava
網頁連接:https://kotlinlang.org/docs/reference/編程
1. 入門
1.1.基本語法
1.1.1. 定義包
1.1.2. 定義函數
1.1.3. 定義局部變量
1.1.4. 使用字符串模板
1.1.5. 使用條件表達式
1.1.6. 使用nullable值檢測空(null)值
1.1.7. 使用類型檢查和自動轉換
1.1.8. 使用for循環
1.1.9. 使用while循環
1.1.10. 使用when表達式
1.1.11. 使用range(範圍)
1.1.12. 使用集合
1.2. 習慣術語
1.2.1. 建立DTO(POJO / POCO)
1.2.2. 函數參數的默認值
1.2.3. 過濾列表
1.2.4. 字符串插值
1.2.5. 實例檢查
1.2.6. 遍歷映射表/列表對
1.2.7. 使用range(範圍)
1.2.8. 只讀列表
1.2.9. 只讀映射表
1.2.10. 訪問映射表
1.2.11. Lazy屬性
1.2.12. 擴展函數
1.2.13. 建立單例模式
1.2.14. If語句非空簡寫
1.2.15. If語句非空和else簡寫
1.2.16. If語句空,執行語句
1.2.17. If語句非空,執行語句
1.2.18. When語句返回值
1.2.19. ‘try/catch’表達式
1.2.20. ‘if’表達式
1.2.21. 返回Unit類型的方法生成器風格用法
1.2.22. 單一表達式函數
1.2.23. 在對象實例中調用多方法(‘with’)
1.2.24. Java7的try與資源
1.3. 編碼約定
1.3.1. 命名風格
1.3.2. 冒號
1.3.3. Lambda表達式
1.3.4. Unit數組
2. 基本概念
2.1. 基本類型
2.1.1. 數字
2.1.1.1. 文字常數
2.1.1.2. 表示法
2.1.1.3. 顯式轉換
2.1.1.4. 操做
2.1.2. 字符
2.1.3. 布爾值
2.1.4. 數組
2.1.5. 串
2.1.5.1. 串文字
2.1.5.2. 串模板
2.2. 包
2.2.1. 導入
2.2.2. 頂層聲明的可見範圍
2.3. 控制流
2.3.1. If表達式
2.3.2. When表達式
2.3.3. For循環
2.3.4. While循環
2.3.5. 中斷和繼續循環
2.4. 返回和跳轉
2.4.1. 中斷和繼續標籤
2.4.2. 在標籤處返回
3. 類與對象
3.1. 類與繼承
3.1.1. 類
3.1.1.1. 構造器
3.1.1.2. 建立類實例
3.1.1.3. 類成員
3.1.2. 繼承
3.1.2.1. 重寫成員
3.1.2.2. 重寫規則
3.1.3. 抽象類
3.1.4. 友元(伴侶)對象
3.1.5. 類封閉
3.2. 屬性和域
3.2.1. 聲明屬性
3.2.2. 獲取器和設置器
3.2.2.1. 支持(反向)域
3.2.2.2. 支持(反向)屬性
3.2.3. 編譯常數
3.2.4. 延後初始化屬性
3.2.5. 重寫屬性
3.2.6. 委託屬性
3.3. 接口
3.3.1. 實現接口
3.3.2. 接口屬性
3.3.3. 解決重寫衝突
3.4. 可見性修飾符
3.4.1. 包
3.4.2. 類和接口
3.4.2.1. 構造函數
3.4.2.2. 局部聲明
3.4.3. 模塊
3.5. 擴展
3.5.1. 擴展函數
3.5.2. 擴展的靜態解決方案
3.5.3. 可空接收器
3.5.4. 擴展屬性
3.5.5. 友元(伴侶)對象擴展
3.5.6. 擴展範圍
3.5.7. 推進
3.6. 數據類
3.6.1. 複製
3.6.2. 數據類和變形聲明
3.6.3. 標準數據類
3.7. 泛型
3.7.1. 變異
3.7.1.1. 聲明位置變異
3.7.2. 類型推測
3.7.2.1. 使用位置變異:類型推測
3.7.2.2. 主角推測
3.8. 泛型函數
3.9. 泛型約束條件
3.9.1. 上界
3.10. 嵌套類
3.10.1. 內部類
3.11. 枚舉類
3.11.1. 初始化
3.11.2. 匿名類
3.11.3. 與枚舉常數使用
3.12. 對象表達式和聲明
3.12.1. 對象表達式
3.12.2. 對象聲明
3.12.2.1. 友元(伴侶)對象
3.12.2.2. 對象表達式與聲明之間的語義不一樣之處
3.13. 委託
3.13.1. 類委託
3.14. 委託屬性
3.14.1. 屬性委託要求
3.14.2. 標準委託
3.14.2.1. Lazy(懶方法)
3.14.2.2. Observable(可觀測方法)
3.14.3. 在映射表中屬性分類
4. 函數和Lambda表達式
4.1. 函數
4.1.1. 函數聲明
4.1.2. 函數用法
4.1.2.1. 中綴(infix)註釋
4.1.2.2. 參數
4.1.2.3. 默認自變量
4.1.2.4. 命名自變量
4.1.2.5. 返回Unit類型函數
4.1.2.6. 單表達式函數
4.1.2.7. 顯式返回類型
4.1.2.8. 可變的自變量數量
4.1.3. 函數範圍
4.1.3.1. 局部函數
4.1.3.2. 成員函數
4.1.4. 泛型函數
4.1.5. 內聯函數
4.1.6. 擴展函數
4.1.7. 高階函數和Lambda表達式
4.1.8. 尾遞歸函數
4.2. 高階函數和Lambda表達式
4.2.1. 高階函數
4.2.2. 內聯函數
4.2.3. 函數文本和函數表達式
4.2.3.1. 函數類型
4.2.3.2. 函數文本語法
4.2.3.3. 函數表達式
4.2.3.4. 閉包
4.2.3.5. 擴展函數表達式
4.3. 內聯函數
4.3.1. 非內聯
4.3.2. 非局部返回
4.3.3. 具體化類型參數
5. 其它
5.1. 變形聲明
5.1.1. 例子:從函數中返回兩個值
5.1.2. 例子:變形聲明和映射表
5.2. 範圍
5.2.1. 怎樣工做
5.2.2. 實用函數
5.2.2.1. rangeTo()
5.2.2.2. downTo()
5.2.2.3. reversed()
5.2.2.4. step()
5.3. 類型檢查和轉換
5.3.1. is和!is操做符
5.3.2. 智能(聰明)轉換
5.3.3. 「非安全」轉換操做符
5.3.4. 「安全」(可空)轉換操做符
5.4. 表達式
5.4.1. 限制
5.5. 等式
5.5.1. 引用等式
5.5.2. 結構等式
5.6. 操做符重載
5.6.1. 約定
5.6.1.1. 一元操做
5.6.1.2. 二元操做
5.6.2. 中綴調用的函數命名
5.7. 空安全
5.7.1. 可空類型和非空類型
5.7.2. 檢查條件中的空
5.7.3. 安全調用
5.7.4. Elvis操做符
5.7.5. !!操做符
5.7.6. 安全轉換
5.8. 異常
5.8.1. 異常類
5.8.1.1. Try是表達式
5.8.2. 檢查異常
5.8.3. Java互操做性
5.9. 註釋
5.9.1. 註釋聲明
5.9.1.1. 用法
5.9.1.2. 構造器(函數)
5.9.1.3. Lambda表達式
5.9.2. 註釋使用位置目標
5.9.3. Java註釋
5.10. 反射
5.10.1. 類引用(參考)
5.10.2. 函數引用(參考)
5.10.2.1. 例子:函數構成
5.10.3. 屬性引用(參考)
5.10.3.1. 與Java反射互操做性
5.10.4. 構造器引用(參考)
5.11. 類型安全生成器
5.11.1. 類型安全生成器例子
5.11.2. 怎樣工做的
5.11.3. com.example.html包的完整定義
5.12. 動態類型
6. 引用(參考)
7. 互操做
7.1. 與java互操做
7.1.1. 從kotlin中調用Java代碼
7.1.1.1. 獲取器和設置器
7.1.1.2. 返回void 的方法
7.1.1.3. 對Kotlin的關鍵字被做爲Java的標識符的轉碼
7.1.1.4. 空安全和平臺類型
7.1.1.5. 映射表類型
7.1.1.6. Kotlin的Java泛型
7.1.1.7. Java數組
7.1.1.8. 操做符
7.1.1.9. 異常檢查
7.1.1.10. 對象方法
7.1.1.11. 從java類繼承
7.1.1.12. 訪問靜態成員
7.1.1.13. Java反射
7.1.1.14. SAM轉換
7.1.2. 從Java中調用Kotlin代碼
7.1.2.1. 屬性
7.1.2.2. 包層次的函數
7.1.2.3. 域
7.1.2.4. 靜態方法和域
7.1.2.5. 用@JName處理簽名衝突
7.1.2.6. 重載生成器
7.1.2.7. 異常檢查
7.1.2.8. 空安全
8. 工具
8.1. 文檔化Kotlin代碼
8.1.1. 生成文檔
8.1.2. KDoc語法
8.1.3. 文檔塊標籤
8.1.3.1. @param <name>
8.1.3.2. @return
8.1.3.3. @constructor
8.1.3.4. @property <name>
8.1.3.5. @throws <class>, @exception <class>
8.1.3.6. @sample <identifier>
8.1.3.7. @see <identifier>
8.1.3.8. @author
8.1.3.9. @since
8.1.3.10. @suppress
8.1.4. 內聯標記
8.1.4.1. 連接到元素
8.2. 使用Maven
8.2.1. 插件和版本
8.2.2. 配置快照資源庫
8.2.3. 依賴關係
8.2.4. 僅Kotlin源代碼編譯
8.2.5. 與Java源碼一塊兒編譯Kotlin
8.2.6. OSGi
8.2.7. 例子
8.3. 使用Ant
8.3.1. 取得Ant任務
8.3.2. 僅用Kotlin源碼產生JVM
8.3.3. 僅用Kotlin源碼和多個根產生JVM
8.3.4. 用Kotlin和Java源碼產生JVM
8.3.5. 用單一源碼文件夾產生JavaScript
8.3.6. 用前綴、後綴和原映射表選項產生JavaScript
8.3.7. 用單一源碼文件夾和元信息選項產生JavaScript
8.3.8. 引用(參考)
8.3.8.1. 特性
8.3.8.2. 特性
8.4. 使用Gradle
8.4.1. 插件和版本
8.4.2. 針對JVM
8.4.3. 針對JavaScript
8.4.4. 針對Android
8.4.4.1. Android Studio
8.4.5. 配置依賴關係
8.4.6. 使用快照版本
8.4.7. OSGi
8.4.8. 例子
8.5. Kotlin 和 OSGi
8.5.1. Maven
8.5.2. Gradle
8.5.3. 常見問題及回答
8.5.3.1. 爲何不直接添加要求的manifest選項到全部的Kotlin代碼庫?
9. 常見問題與解答
9.1. 常見問題與解答
9.1.1. 常見問題
9.1.1.1. Kotlin是什麼?
9.1.1.2. 爲何是一門新的編程語言?
9.1.1.3. 如何受權?
9.1.1.4. 與Java兼容嗎?
9.1.1.5. 有工具支持嗎?
9.1.1.6. 有Eclipse支持嗎?
9.1.1.7. 有獨立的編譯器嗎?
9.1.1.8. Kotlin 是函數式編程語言嗎?
9.1.1.9. Kotlin支持泛型嗎?
9.1.1.10. 要求分號(;)嗎?
9.1.1.11. 要求花括號嗎?
9.1.1.12. 爲何類型聲明在右側?
9.1.1.13. 右側類型聲明會影響工具嗎?
9.1.1.14. Kotlin可擴展嗎?
9.1.1.15. 我能嵌入個人DSL到該編程語言中嗎?
9.1.1.16. JavaScript支持什麼ECMAScript級別?
9.1.1.17. JavaScript back-end支持模塊系統嗎?
9.2. 與Java對比
9.2.1.1. 在Kotlin中解決了一些Java問題。
9.2.1.2. Java支持的,而Kotlin不支持的是什麼?
9.2.1.3. Java不支持的,而Kotln支持的是什麼?
9.3. 與Scala對比
9.3.1.1. Scala支持的,而Kotlin不支持的是什麼?
9.3.1.2. Scala不支持的,而kotlin支持的是什麼?安全