●目 錄 章 Kotlin開發環境搭建 1 1.1 Kotlin概述 1 1.1.1 Kotlin是什麼 1 1.1.2 為什麼Kotlin突然成為熱門 2 1.1.3 Kotlin相對於Java有哪些優勢 2 1.1.4 Kotlin能做什麼 3 1.2 在線運行Kotlin代碼 3 1.3 安裝和配置Kotlin 6 1.3.1 安裝和配置JDK 6 1.3.2 Windows下安裝和 配置Kotlin 9 1.3.3 Mac OS X下安裝和 配置Kotlin 10 1.4 測試Kotlin編譯和運行環境 10 1.4.1 命令行方式使用Kotlin 11 1.4.2 Kotlin的REPL環境 13 1.4.3 在命令行中運行腳本文件 14 1.4.4 在瀏覽器中運行Kotlin程序 14 1.4.5 使用Node.js運行Kotlin程序 16 1.4.6 在微信小程序中運行Kotlin 程序 17 1.4.7 用Kotlin開啟全棧開發模式 21 1.5 Kotlin中的語法糖 22 1.6 Kotlin的集成開發環境(IDE) 24 1.6.1 IntelliJ IDEA 的Kotlin基礎開發 環境 25 1.6.2 使用Android Studio和Kotlin開發 Android App 29 1.7 小結 34 第2章 Kotlin基礎知識 35 2.1 Kotlin的基本語法 35 2.1.1 定義變量 35 2.1.2 定義函數 36 2.1.3 注釋 37 2.2 基礎數據類型 37 2.2.1 數值類型 38 2.2.2 字符類型 39 2.2.3 布爾類型 41 2.2.4 數組 41 2.2.5 字符串 42 2.2.6 字符串模板 43 2.3 包(Package) 43 2.4 控制流 46 2.4.1 條件語句 46 2.4.2 when語句 46 2.4.3 for循環 48 2.4.4 while循環 49 2.5 小結 50 第3章 類和接口 51 3.1 類的聲明 51 3.2 構造器 51 3.2.1 主構造器 51 3.2.2 第二構造器 53 3.2.3 Kotlin中的Singleton模式 54 3.2.4 Kotlin函數中的默認參數 55 3.2.5 創建類的實例 58 3.3 類成員 58 3.3.1 屬性的基本用法 58 3.3.2 屬性的getter和setter形式 60 3.3.3 保存屬性值的字段 60 3.3.4 函數 61 3.3.5 嵌套類 63 3.4 修飾符(Modifiers) 64 3.5 類的繼承 65 3.5.1 Kotlin類如何繼承 65 3.5.2 重寫方法 65 3.5.3 重寫屬性 66 3.6 接口 67 3.7 抽像類 68 3.8 小結 68 第4章 枚舉類和擴展 69 4.1 枚舉類 69 4.1.1 枚舉類的基本用法 69 4.1.2 為枚舉值指定對應的數值 70 4.1.3 枚舉類的其他功能 71 4.2 擴展 72 4.2.1 擴展原生API 72 4.2.2 擴展自定義類 73 4.2.3 成員函數衝突的解決方案 75 4.2.4 擴展屬性 76 4.2.5 擴展伴隨對像 (Companion Object) 76 4.2.6 擴展的範圍 77 4.2.7 在類中使用擴展 77 4.2.8 調用特定類的成員函數 78 4.2.9 擴展成員的繼承 79 4.3 小結 80 第5章 數據類和封閉類 81 5.1 數據類(Data Class) 81 5.1.1 使用數據類 81 5.1.2 對像復制 84 5.1.3 數據類成員的解構 85 5.2 封閉類(Sealed Classes) 86 5.3 小結 86 第6章 泛型 87 6.1 泛型基礎 87 6.2 類型變異 88 6.3 類型投射 90 6.4 星號投射 92 6.5 泛型函數 92 6.6 泛型約束 93 6.7 小結 93 第7章 對像和委托 94 7.1 對像 94 7.1.1 對像表達式 94 7.1.2 聲明匿名對像 97 7.1.3 訪問封閉作用域內的變量 97 7.1.4 陪伴對像 99 7.2 委托 99 7.2.1 類的委托 99 7.2.2 委托屬性 100 7.2.3 委托類的初始化函數 102 7.2.4 委托的前提條件 104 7.3 標準委托 104 7.3.1 惰性裝載 105 7.3.2 可觀察屬性 105 7.3.3 阻止屬性的賦值操作 106 7.3.4 Map委托 107 7.3.5 MutableMap委托 108 7.4 小結 108 第8章 高階函數與Lambda表達式 109 8.1 高階函數 109 8.2 Lambda表達式與匿名函數 110 8.2.1 函數類型 111 8.2.2 Lambda表達式的語法 111 8.2.3 匿名函數 112 8.2.4 閉包(Closure) 113 8.3 小結 113 第9章 函數 114 9.1 函數基本用法 114 9.2 使用中綴標記法調用函數 114 9.3 單表達式函數 115 9.4 函數參數和返回值 116 9.4.1 可變參數 116 9.4.2 返回值類型 117 9.5 函數的範圍 117 9.5.1 局部函數 117 9.5.2 成員函數 118 9.6 泛型函數 118 9.7 內聯函數 119 9.7.1 讓Lambda表達式內聯進 函數 119 9.7.2 內聯部分Lambda表達式 121 9.7.3 非局部返回 (Non-local return) 124 9.7.4 實體化的類型參數 (Reified type parameter) 125 9.7.5 內聯屬性 126 9.8 小結 127 0章 其他Kotlin技術(1) 128 10.1 數據解構 128 10.2 集合 130 10.3 值範圍 132 10.3.1 值範圍的應用 132 10.3.2 值範圍的工作原理 134 10.3.3 常用工具函數 135 10.4 類型檢查與類型轉換 136 10.4.1 is與!is操作符 136 10.4.2 智能類型轉換 138 10.4.3 強行類型轉換 139 10.5 this表達式 140 10.6 相等判斷 140 10.7 操作符重載 141 10.7.操作符重載 141 10.7.操作符 142 10.7.3 方括號操作符重載 144 10.7.4 賦值操作符重載 146 10.7.5 邏輯操作符重載 147 10.8 小結 149 1章 其他Kotlin技術(2) 150 11.1 null值安全性 150 11.1.1 可為null的類型與不可為null 的類型 150 11.1.2 在條件語句中進行null檢查 151 11.1.3 安全調用操作符 152 11.1.4 Elvis操作符 152 11.1.5 !!操作符 153 11.1.6 安全的類型轉換 153 11.1.7 可為null的類型構成的集合 153 11.2 異常類 153 11.3 注解(Annotations) 155 11.3.1 使用注解 156 11.3.2 注解類的構造器 157 11.3.3 Lambda表達式 158 11.4 反射(Reflection) 158 11.4.1 類引用(Class Reference) 159 11.4.2 枚舉類成員 159 11.4.3 動態調用成員函數 161 11.4.4 動態調用成員屬性 161 11.5 小結 163 2章 Android的窗口——Activity 164 12.1 什麼是Activity 164 12.2 Activity的基本用法 164 12.2.1 創建一個不包含任何Activity 的Android工程 165 12.2.2 手動創建Activity 167 12.2.3 創建和加載布局 168 12.2.4 在AndroidManifest文件中注冊 Activity 172 12.2.5 編譯和運行Android工程 172 12.2.6 為Activity添加新組件 173 12.2.7 為Activity添加邏輯代碼 174 12.2.8 為Activity添加Toast 175 12.2.9 關閉Activity 178 12.3 使用Intent連接多個Activity 178 12.3.1 使用顯式Intent 179 12.3.2 使用隱式Intent 182 12.3.3 為隱式Intent設置更多的過濾 條件 185 12.3.4 使用隱式Intent訪問 繫統App 187 12.4 向Activity中傳遞數據 189 12.5 從Activity返回數據 191 12.6 Activity的生命周期 192 12.7 記錄當前活動的Activity 196 12.8 小結 197 3章 Android App的裝飾工具—— UI組件與布局 198 13.1 如何編寫程序界面 198 13.2 常用的UI組件 198 13.2.1 文本顯示組件 (TextView) 198 13.2.2 按鈕組件(Button) 202 13.2.3 文本編輯組件(EditText) 206 13.2.4 圖像組件(ImageView) 210 13.2.5 進度條組件(ProgressBar) 213 13.2.6 對話框組件(AlertDialog) 216 13.3 布局詳解 217 13.3.1 線性布局(LinearLayout) 217 13.3.2 相對布局(RelativeLayout) 222 13.3.3 幀布局(FrameLayout) 226 13.3.4 百分比布局 (PercentFrameLayout) 227 13.4 小結 230 4章 永久保存數據的方式—— 持久化技術 231 14.1 SharedPreferences存儲 231 14.1.1 將數據存儲到SharedPreferences 中 231 14.1.2 從SharedPreferences讀取 數據 234 14.1.3 利用SharedPreferences存取用戶名 和密碼 235 14.2 文件流操作 239 14.2.1 openFileOutput和openFileInput 方法 239 14.2.2 讀寫SD卡上的文件 242 14.3 App權限的授予和拒絕 248 14.4 讀寫JSON格式的數據 250 14.5 SQLite數據庫 257 14.5.1 SQLite數據庫管理 工具 257 14.5.2 創建SQLite數據庫和 數據表 261 14.5.3 向SQLite數據表中插入 數據 264 14.5.4 刪除SQLite數據表中的 數據 265 14.5.5 更新SQLite數據表中的 數據 266 14.5.6 查詢SQLite表中的數據 267 14.5.7 將數據庫與App一起 發布 268 14.6 小結 270 5章 連接外部世界——網絡技術 271 15.1 WebView組件 271 15.2 使用HTTP與服務端進行交互 273 15.2.1 使用HttpURLConnection 273 15.2.2 使用OkHttp 276 15.3 小結 282 6章 項目實戰——歐瑞天氣App 283 16.1 項目概述 283 16.2 添加依賴 284 16.3 實現主窗口 285 16.4 顯示地區列表 286 16.4.1 描述城市信息的數據類 286 16.4.2 處理JSON格式的城市列表 信息 286 16.4.3 天氣信息描述類 288 16.4.4 獲取城市信息的對像 290 16.4.5 在ListView組件中顯示地區 列表 293 16.5 顯示天氣信息 298 16.6 小結 303
內容簡介
內 容 提 要 本書分3部分講解Kotlin,部分(~11章)是Kotlin語言的基礎部分,主要介紹了Kotlin的基礎知識、語法以及大量的“語法糖”,如搭建Kotlin開發環境、數據類型、控制流、類、對像、接口、擴展、委托、Lambda表達式、操作符重載等。第2部分(2~15章)主要介紹了如何用Kotlin開發Android App。由於Kotlin可以調用JDK中的API,所以在使用Kotlin開發Android App的過程中,很多都是調用JDK的API實現的,但開發語言使用的是Kotlin。因此,這一部分詳細介紹了用Kotlin開發Android App 需要掌握的核心知識,如Activity、組件、布局、流文件、SQLite數據庫、網絡等技術。第3部分(6章)是一個完整的案例:歐瑞天氣。通過這個項目,可以讓讀者了解利用Kotlin開發Android App的全過程。