Kotlin從入門到項目實戰

Kotlin從入門到項目實戰

《Kotlin從入門到項目實戰》是Kotlin跨平台程式語言的實戰型工具書,全書力求以“簡潔的語言+大量實例”風格進行講解,能夠幫助熟悉Java語言或“零基礎編程”的讀者快速掌握Kotlin。

基本介紹

  • 書名:Kotlin從入門到項目實戰
  • 作者:徐鴻福 編著
  • ISBN:978-7-121-37140-0
  • 頁數:376頁
  • 定價:79.00元 
  • 出版社:電子工業出版社
  • 出版時間:2019年8月出版
  • 開本:16開
內容提要,目錄,作者簡介,

內容提要

《Kotlin從入門到項目實戰》共分為5篇,由淺入深,層次遞進地進行講解。第1篇“準備”,介紹了Kotlin語言的基本特性和使用場景;第2篇“入門”,介紹了Kotlin語言中的變數和常量、數據類型、操作符、流程控制、數組類型、集合類型;第3篇“進階”,介紹了映射類型、類與對象、類的進階用法、繼承、抽象類與接口、包管理與訪問控制符、正則表達式、泛型;第4篇“高階”,介紹了擴展與委託、函式的高級套用、註解與反射、異常、I/O操作、DSL、異步編程、與Java之間的調用;第5篇“項目實戰”,主要介紹了使用Kotlin語言來編寫一個圖書管理系統的後端套用、Android套用、前端套用。
本書適合所有對Kotlin語言感興趣的讀者。無論讀者之前是否有過Kotlin經驗或Java基礎,哪怕只是編程的初學者,都可以通過本書很快地掌握這門語言。

目錄

第1篇 準備
=
第1章 了解Kotlin 2
1.1 Kotlin能幹什麼 2
1.2 Kotlin的優勢 3
1.3 如何使用本書 3
-
第2章 體驗Kotlin 4
2.1 搭建開發環境 4
∣2.1.1 搭建Java的開發環境 4
∣2.1.2 搭建Kotlin的開發環境 6
2.2 使用RPHL 6
∣2.2.1 認識RPHL——快速驗證代碼的利器 6
∣2.2.2 實例1:在RPHL中進行四則運算 6
2.3 Kotlin的IDE支持 7
∣2.3.1 使用IDEA/Android Studio 7
∣2.3.2 使用Eclipse 7
2.4 Kotlin 的構建工具 8
∣2.4.1 使用Maven 8
∣2.4.2 使用Gradle 10
2.5 基本概念 10
∣2.5.1 源檔案與位元組碼檔案 10
∣2.5.2 標識符與關鍵字 11
∣2.5.3 語句和代碼塊 11
∣2.5.4 注釋 11
∣2.5.5 main()函式 13
2.6 本章小結 14
=
第2篇 入門
=
第3章 第一次動手 16
3.1 實例2:第一個Kotlin腳本——四則運算 16
∣3.1.1 了解Kotlin腳本 16
∣3.1.2 編寫Kotlin腳本 16
∣3.1.3 運行腳本 16
3.2 實例3:第一個Kotlin套用——Hello Kotlin 17
∣3.2.1 了解Kotlin套用 17
∣3.2.2 編寫代碼 17
∣3.2.3 編譯代碼 17
∣3.2.4 運行代碼 18
3.3 本章小結 18
-
第4章 變數和常量 19
4.1 變數 19
∣4.1.1 了解變數 19
∣4.1.2 創建變數 19
4.2 常量(值) 20
∣4.2.1 了解常量(值) 21
∣4.2.2 創建常量(值) 21
4.3 實例4:對比變數和常量 21
4.4 本章小結 22
=
第5章 數據類型 23
5.1 了解數據類型分類 23
5.2 “數值”類型——表示數字 23
∣5.2.1 數值類型的基本分類 23
∣5.2.2 整型、長整型與短整型 24
∣5.2.3 單精度與雙精度浮點類型 26
∣5.2.4 實例5:用“數值”類型進行轉賬操作 27
5.3 “字元”與“字元串”類型——表示文本 27
∣5.3.1 字元類型 28
∣5.3.2 字元串類型——一組字元的集合 28
∣5.3.3 字元串類型的常用方法 29
∣5.3.4 了解字元串模板——在字元串中使用表達式 31
∣5.3.5 實例6:用字元串模板編寫SQL語句 32
∣5.3.6 了解多行文字——原樣輸出多行語句 33
∣5.3.7 實例7:用多行字元串排版文字 34
5.4 “位元組”類型——表示二進制 35
5.5 “布爾”類型——真或假 35
5.6 Kotlin的可空類型 35
∣5.6.1 空值——沒有存儲空間 35
∣5.6.2 可空類型——可能是空值,也可能不是 36
∣5.6.3 非空類型——不能為空值 37
∣5.6.4 實例8:用安全操作符避免空指針 37
5.7 Kotlin的內置類型結構 39
∣5.7.1 Any類型——所有類的父類 39
∣5.7.2 Unit類型——什麼都不返回 39
∣5.7.3 Nothing類型——什麼都沒有 39
5.8 類型轉換與類型判斷 40
∣5.8.1 數值類型轉換 40
∣5.8.2 自動類型轉換 40
∣5.8.3 強制類型轉換 41
∣5.8.4 類型提升 41
∣5.8.5 安全類型轉換 41
∣5.8.6 類型判斷與智慧型轉換 42
5.9 類型別名 42
5.10 本章小結 43
=
第6章 操作符 44
6.1 認識操作符 44
6.2 一元操作符 44
∣6.2.1 正負操作符 44
∣6.2.2 自增操作符與自減操作符 45
∣6.2.3 否定操作符 45
6.3 二元操作符 46
∣6.3.1 四則運算操作符 46
∣6.3.2 複合操作符 46
∣6.3.3 比較操作符 47
∣6.3.4 位運算方法 48
∣6.3.5 貓王操作符 49
∣6.3.6 相等性 49
∣6.3.7 in和!in操作符 50
∣6.3.8 索引操作符 51
∣6.3.9 區間操作符 51
6.4 操作符重寫 51
6.5 本章小結 52
=
第7章 流程控制 53
7.1 條件語句 53
∣7.1.1 if語句 53
∣7.1.2 if表達式 55
∣7.1.3 when語句 56
∣7.1.4 when表達式 57
∣7.1.5 實例9:when語句的多種用法 57
7.2 循環語句 59
∣7.2.1 while循環 60
∣7.2.2 for循環 61
∣7.2.3 實例10:用for循環替代while循環 62
∣7.2.4 repeat語句 62
7.3 跳轉語句 63
∣7.3.1 continue語句——跳過當前循環 63
∣7.3.2 break語句——停止循環 64
∣7.3.3 實例11:用continue語句和break語句替換標籤 65
7.4 本章小結 65
=
第8章 數組類型 67
8.1 數組 67
∣8.1.1 了解數組——一組相同類型的數據 67
∣8.1.2 創建數組 67
∣8.1.3 實例12:數組的常用操作 70
8.2 多維數組 72
∣8.2.1 了解多維數組——數組的元素也是數組 72
∣8.2.2 實例13:用多維數組輸出圖形 73
8.3 本章小結 74
=
第9章 集合類型 75
9.1 列表(List)類型 75
∣9.1.1 列表——有序的一組數據 75
∣9.1.2 不可變列表 75
∣9.1.3 可變列表 77
∣9.1.4 空列表 78
∣9.1.5 實例14:列表類型的常用方法 79
9.2 集(Set)類型 82
∣9.2.1 集——不重複的一組數據 82
∣9.2.2 不可變集 82
∣9.2.3 可變集 82
∣9.2.4 空集 84
∣9.2.5 實例15:集類型的常用方法 84
9.3 區間(Range)類型 85
∣9.3.1 了解區間——連續的一組數據 85
∣9.3.2 實例16:區間類型的常用方法 87
9.4 序列(Sequence)類型 88
∣9.4.1 了解序列——一組數據 88
∣9.4.2 實例17:序列類型的常用方法 88
9.5 本章小結 89
=
第3篇 進階
=
第10章 映射類型 94
10.1 了解映射——通過名字找到值 94
10.2 創建不可變映射 94
10.3 創建可變映射 95
10.4 創建空映射 97
10.5 實例18:映射的常用方法 97
∣10.5.1 獲得映射的長度 97
∣10.5.2 通過鍵訪問值 97
∣10.5.3 修改可變映射 99
∣10.5.4 刪除可變映射中的元素 100
∣10.5.5 遍歷映射 100
10.6 本章小結 101
=
第11章 類與對象 102
11.1 函式的概念與使用 102
∣11.1.1 了解函式——重用一組語句 102
∣11.1.2 認識函式的基本結構 102
11.2 函式的返回值 103
∣11.2.1 在函式中返回值 103
∣11.2.2 了解返回值的數據類型 104
∣11.2.3 實例19:在函式中同時返回多個值 104
11.3 函式的參數 105
∣11.3.1 了解函式的參數 105
∣11.3.2 命名參數 106
∣11.3.3 變參——在無法確定參數個數時使用 107
∣11.3.4 參數的默認值 109
∣11.3.5 單表達式函式 109
11.4 類的概念與使用 110
∣11.4.1 了解類——同一種概念的抽象 110
∣11.4.2 類的基本結構 110
∣11.4.3 實例20:定義一個電腦類 111
11.5 對象 112
∣11.5.1 了解對象——類的具體實現 112
∣11.5.2 創建對象 113
∣11.5.3 訪問對象的屬性和方法 113
11.6 構造方法 114
∣11.6.1 了解構造方法——如何創建對象 114
∣11.6.2 主構造方法與初始化代碼 114
∣11.6.3 副構造方法 116
11.7 屬性 118
∣11.7.1 了解屬性和欄位 118
∣11.7.2 使用默認的Getter和Setter訪問器 119
∣11.7.3 自定義Getter和 Setter訪問器 119
∣11.7.4 幕後欄位 121
∣11.7.5 延遲初始化屬性 121
∣11.7.6 內聯屬性 123
11.8 方法 123
∣11.8.1 infix方法 123
∣11.8.2 componentN方法 124
11.9 this關鍵字 125
11.10 實例21:創建用戶登錄管理系統 126
∣11.10.1 創建用戶類 126
∣11.10.2 創建用戶管理類 128
∣11.10.3 創建客戶端 131
11.11 本章小結 132
=
第12章 類的進階用法 133
12.1 嵌套類——在類中定義類 133
12.2 內部類——將類作為另一個類的成員 134
12.3 對象聲明——單例對象 134
12.4 伴生對象——代替靜態成員 135
∣12.4.1 了解伴生對象——類中的單例對象 135
∣12.4.2 伴生對象的套用 136
12.5 對象表達式——匿名類 137
∣12.5.1 創建對象表達式 137
∣12.5.2 匿名對象的類型限制 138
12.6 數據類——貧血模型 140
∣12.6.1 創建數據類 140
∣12.6.2 了解內置方法的限制規則 142
∣12.6.3 了解對象間的複製 144
12.7 枚舉類——常量集 145
∣12.7.1 創建枚舉類 146
∣12.7.2 實例22:用枚舉類處理日期 147
12.8 密封類 150
12.9 本章小結 150
=
第13章 繼承、抽象類與接口 152
13.1 繼承 152
∣13.1.1 了解繼承——為現有類增加功能 152
∣13.1.2 什麼樣的類才能被繼承 152
∣13.1.3 使用繼承 153
∣13.1.4 重寫方法 153
∣13.1.5 重寫屬性 154
∣13.1.6 子類訪問父類成員——super關鍵字 155
13.2 抽象類 156
∣13.2.1 了解抽象類——定義模板 156
∣13.2.2 使用抽象類 156
13.3 接口 157
∣13.3.1 了解接口 157
∣13.3.2 使用接口 158
13.4 is-a關係 159
13.5 重寫規則 160
13.6 實例23:用繼承繪製一個手機螢幕 161
13.7 本章小結 165
=
第14章 包管理與訪問控制符 166
14.1 包——一組相關代碼的集合 166
∣14.1.1 聲明包 166
∣14.1.2 導入包 167
∣14.4.3 默認導入包 168
14.2 訪問控制符——控制成員是否可以被訪問 168
∣14.2.1 訪問控制符的分類 168
∣14.2.2 構造方法上的訪問控制符 169
∣14.2.3 類成員上的訪問控制符 169
14.3 其他控制符 170
∣14.3.1 open控制符和final控制符 171
∣14.3.2 override控制符 171
14.4 本章小結 171
=
第15章 正則表達式 172
15.1 正則表達式的作用 172
15.2 使用正則表達式 172
∣15.2.1 創建正則表達式對象 172
∣15.2.2 匹配數據 173
∣15.2.3 提取數據 173
∣15.2.4 替換數據 174
∣15.2.5 正則分組 174
15.3 實例24:用正則表達式解析網頁 175
15.4 本章小結 177
=
第16章 泛型 178
16.1 了解泛型 178
∣16.1.1 泛型的概念 178
∣16.1.2 為什麼要有泛型 178
16.2 泛型的使用 179
∣16.2.1 泛型函式 179
∣16.2.2 泛型類 180
16.3 類型參數約束 181
∣16.3.1 上界的概念 181
∣16.3.2 指定單個上界 181
∣16.3.3 指定多個上界 182
∣16.3.4 隱式上界 182
16.4 類型型變 183
∣16.4.1 型變 183
∣16.4.2 在聲明處協變 184
∣16.4.3 在聲明處逆變 185
∣16.4.4 類型參數邊界——在使用處型變 186
∣16.4.5 星號投影 186
16.5 類型擦除 187
∣16.5.1 類型擦除的概念 187
∣16.5.2 內聯函式和類型擦除 188
16.6 實例25:用泛型實現數據的持久化 188
16.7 本章小結 191
=
第4篇 高階
=
第17章 擴展與委託 194
17.1 擴展——為現有類增加功能 194
∣17.1.1 擴展方法 194
∣17.1.2 擴展屬性 195
∣17.1.3 擴展伴生對象 196
∣17.1.4 擴展可空類型 196
∣17.1.5 靜態綁定 197
17.2 委託——繼承的替代方案 198
∣17.2.1 使用方法委託 198
∣17.2.2 使用屬性委託 200
∣17.2.3 使用內置的屬性委託 201
∣17.2.4 委託工廠類 205
17.3 本章小結 207
=
第18章 函式的高級套用 208
18.1 高階函式 208
∣18.1.1 函式類型 208
∣18.1.2 將函式作為參數 210
∣18.1.3 將函式作為返回值 210
18.2 匿名函式與函式表達式 212
18.3 Lambda表達式 212
∣18.3.1 使用Lambda表達式 213
∣18.3.2 隱式參數 it 214
∣18.3.3 作為參數的Lambda表達式 214
∣18.3.4 在Lambda表達式中返回數據 215
18.4 內聯函式 216
∣18.4.1 創建內聯函式 217
∣18.4.2 取消參數內聯 218
∣18.4.3 本地返回與非本地返回 218
18.5 尾遞歸函式 219
18.6 函式式編程 220
∣18.6.1 map()方法 220
∣18.6.2 flatMap()方法 221
∣18.6.3 zip()方法 221
∣18.6.4 reduce()方法 222
∣18.6.5 fold()方法 223
∣18.6.6 filter()方法 223
∣18.6.7 forEach()方法 224
∣18.6.8 partition()方法 224
18.7 實例26:用函式式方法完成數據分析 225
18.8 本章小結 226
=
第19章 註解與反射 227
19.1 註解——為代碼添加標記 227
∣19.1.1 使用註解 227
∣19.1.2 了解註解參數 228
∣19.1.3 註解目標 231
∣19.1.4 了解元註解 232
19.2 反射——在程式運行時獲得代碼元數據 234
∣19.2.1 添加依賴 234
∣19.2.2 使用反射 234
19.3 實例27:通過反射和註解完成對象的序列化 240
19.4 本章小結 246
=
第20章 異常 247
20.1 了解異常 247
20.2 異常的處理 247
∣20.2.1 捕獲和處理異常 247
∣20.2.2 了解finally代碼塊和返回值 249
∣20.2.3 處理try表達式中的異常 250
∣20.2.4 拋出異常 251
20.3 異常對象 253
∣20.3.1 了解異常對象 253
∣20.3.2 自定義異常類 253
∣20.4 實例28:處理回調中的異常 254
20.5 本章小結 257
=
第21章 I/O操作 258
21.1 檔案操作 258
∣21.1.1 創建一個檔案 258
∣21.1.2 刪除一個檔案 259
∣21.1.3 創建一個目錄 259
∣21.1.4 刪除一個目錄 259
21.2 流操作 259
∣21.2.1 流的分類 259
∣21.2.2 寫檔案 260
∣21.2.3 讀取檔案 261
21.3 實例29:讀取並解析CSV檔案 262
21.4 本章小結 265
=
第22章 DSL 266
22.1 DSL的基礎知識 266
∣22.1.1 了解領域特定語言 266
∣22.1.2 了解DSL的常見使用場景 266
∣22.1.3 了解DSL的分類 267
22.2 使用DSL 267
∣22.2.1 實例30:用Lambda表達式實現DSL 267
∣22.2.2 實例31:用鏈式調用實現DSL 269
22.3 內置DSL 270
22.4 本章小結 271
=
第23章 異步編程 272
23.1 執行緒與進程 272
23.2 執行緒的使用 272
23.3 了解協程 274
23.4 協程的使用 274
∣23.4.1 配置依賴 274
∣23.4.2 協程構建器——創建協程 275
∣23.4.3 Job類——控制協程 277
∣23.4.4 協程狀態和協程取消 278
23.5 掛起函式 284
23.6 async函式與await()方法 285
∣23.6.1 async()函式 285
∣23.6.2 await()方法 287
23.7 協程上下文與協程調度器 287
∣23.7.1 上下文與調度器 287
∣23.7.2 使用協程調度器 289
23.8 協程作用域 290
∣23.8.1 協程的父子關係 290
∣23.8.2 協程中的異常 291
23.9 調試協程 292
23.10 本章小結 293
=
第24章 與Java之間的調用 295
24.1 用Kotlin調用Java程式 295
∣24.1.1 標識符 295
∣24.1.2 類型映射 296
∣24.1.3 可空類型與平台類型 298
∣24.1.4 Setter與Getter方法 299
∣24.1.5 Object類 300
∣24.1.6 靜態成員 301
∣24.1.7 SAM類型 302
∣24.1.8 泛型 303
∣24.1.9 檢查異常 303
∣24.1.10 JNI 304
24.2 用Java調用Kotlin程式 304
∣24.2.1 屬性 304
∣24.2.2 可空類型 305
∣24.2.3 實例欄位 305
∣24.2.4 類欄位 306
∣24.2.5 靜態方法 307
∣24.2.6 訪問控制符 308
∣24.2.7 KClass 308
∣24.2.8 方法重載 308
∣24.2.9 頂層成員 309
∣24.2.10 @JvmName註解 310
∣24.2.11 型變 312
∣24.2.12 檢查異常 312
24.3 本章小結 313
=
第5篇 項目實戰
=
第25章 用Kotlin編寫“圖書管理系統”的後端套用 316
25.1 建立Spring Boot工程 316
25.2 實現Persistence層 319
25.3 實現Resource層 326
25.4 實現Service層 330
25.5 允許跨域訪問 333
25.6 運行代碼 333
-
第26章 用Kotlin編寫“圖書管理系統”的Android套用 335
26.1 建立Android工程 335
26.2 配置工程 338
26.3 編寫Layout檔案 341
26.4 編寫業務模型 344
26.5 創建Sevice 345
26.6 創建UI 346
26.7 運行工程 350
-
第27章 用Kotlin編寫“圖書管理
系統”的前端套用 351
27.1 建立前端工程 351
27.2 解析工程 352
27.3 調用JavaScript的基礎知識 354
27.4 React的基礎知識 355

作者簡介

徐鴻福
精通Java和移動套用研發,擁有多年的研發和架構經驗。
擅長用Java、Kotlin、Scala、JavaScript、Go等程式語言開發大型商業系統。
在移動網際網路領域,從事過瀏覽器、多媒體等移動套用的研發。其中,負責的移動套用中台大大提高了系統的穩定性,減少了開發人員的代碼開發量。
在網際網路金融領域,從事過財務、清結算、區塊鏈等系統研發。其中,負責的金融雲系統如今已是某“獨角獸”公司最重要的戰略項目。

相關詞條

熱門詞條

聯絡我們