Kotlin 從入門到項目實戰

徐鴻福

  • 出版商: 電子工業
  • 出版日期: 2019-08-01
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • ISBN: 7121371405
  • ISBN-13: 9787121371400
  • 相關分類: JVM 語言
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

本書是Kotlin跨平臺編程語言的實戰型工具書,全書力求以“簡潔的語言+大量實例”風格進行講解,能夠幫助熟悉Java語言或“零基礎編程”的讀者快速掌握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 調用的基礎知識 354

27.4 React的基礎知識 355