Kotlin 極簡教程
內容描述
Kotlin是JetBrains團隊開發的一門現代的、註重工程實用性的靜態類型編程語言,JetBrains團隊以開發了世界上最好用的IDE而著稱。Kotlin於2010年推出,並在2011年開源。Kotlin充分借鑒並汲取了Java、Scala、Groovy、C#、Gosu、JavaScript、Swift等多門傑出語言的優秀特性,語法簡單優雅、表現力豐富、抽象擴展方便、代碼可重用性好,同時也支持面向對象和函數式編程的多範式編程。Kotlin可以編譯成Java字節碼運行在JVM平臺和Android平臺,也可以編譯成JavaScript運行在瀏覽器環境,而且還可以直接編譯成機器碼的系統級程序,直接運行在嵌入式、iOS、MacOS/Linux/Windows等沒有JVM環境的平臺。Kotlin源自產業界,它解決了工程實踐中程序設計所面臨的真實痛點,例如,類型系統可以避免空指針異常的問題。
目錄大綱
Contents目錄
序言
前言
第1部分Kotlin語言基礎
第1章Kotlin簡介2
1.1 Kotlin簡史2
1.1.1 Kotlin概述3
1.1.2 Kotlin元年:2016 3
1.2快速學習工具4
1.2.1雲端IDE 4
1.2. 2本地命令行環境搭建5
1.2.3使用IntelliJ IDEA 9
1.2.4使用Eclipse 13
1.2.5使用Gradle構建Kotlin項目17
1.2.6編程語言學習小結18
1.3本章小結20
第2章快速開始HelloWorld 21
2.1命令行版HelloWorld 21
2.2應用程序版HelloWorld 21
2.3 Web RESTful HelloWorld 24
2.4 Android版的HelloWorld 34
2.5 JavaScript版HelloWorld 39
2.6本章小結49
第3章Kotlin語言基礎50
3.1包50
3.2聲明變量和值56
3.3變量類型推斷57
3.3.1省去變量類型57
3.3.2使用is運算符進行類型檢測59
3.4字符串與其模板表達式59
3.5流程控制語句60
3.5.1 if表達式60
3.5.2 when表達式62
3.5.3 for循環64
3.5.4 while循環64
3.5.5 break和continue 65
3.5.6 return 66
3.5.7標籤69
3.5.8 throw表達式71
3.6代碼註釋72
3.7語法與標識符73
3.7.1修飾符73
3.7. 2關鍵字(保留字) 75
3.7.3操作符和操作符的重載81
3.7.4操作符優先級82
3.7.5一元操作符83
3.7.6二元操作符85
3.8擴展函數和擴展屬性90
3.8.1擴展函數90
3.8.2擴展屬性93
3.9空指針安全93
3.10標準庫API簡介96
3.11本章小結97
第4章基本數據類型與類型系統98
4.1什麼是類型98
4.2編譯時類型與運行時類型100
4.2.1弱類型與強類型100
4.2.2靜態類型與動態類型101
4.2.3顯式類型與隱式類型101
4.3根類型Any 101
4.4基本類型102
4.4.1數字類型104
4.4.2字符類型與轉義符109
4.4.3布爾類型111
4.4.4字符串類型112
4.4.5數組類型117
4.5可空類型120
4.5.1 Kotlin中的null 120
4.5.2可空類型String?與安全調用?. 122
4.5.3可空性的實現原理124
4.5.4可空類型層次體系126
4.6 kotlin.Unit類型127
4.7 kotlin.Nothing類型128
4.8類型檢測與類型轉換131
4.8.1 is與!is運算符131
4.8. 2 as運算符133
4.9本章小結134
第二部分編程進階
第5章集合類136
5.1集合類的基本概念136
5.1.1集合類是一種數據結構137
5.1.2集合類是ADT 137
5.1.3連續存儲和離散存儲138
5.2 Kotlin集合類簡介138
5.3 List 139
5.3.1創建不可變List 140
5.3.2創建可變集合MutableList 142
5.3.3遍歷List元素143
5.3.4 List元素操作函數146
5.3.5 List集合類的基本運算函數151
5.3.6過濾操作函數159
5.3.7映射操作函數166
5.3.8分組操作函數169
5.3.9排序操作符170
5.3.10生產操作符171
5.4 Set 174
5.4.1空集174
5.4.2創建Set 176
5.4.3使用Java中的Set類177
5.4.4 Set元素的加減操作plus minus 179
5.5 Map 179
5.5.1創建Map 180
5.5.2訪問Map的元素184
5.5.3 Map操作符函數186
5.6本章小結192
第6章泛型193
6.1泛型簡介193
6.1.1泛型與多態193
6.1.2為何引進泛型194
6.1.3 Java與Kotlin中的泛型195
6.2型變197
6.2.1 Java的類型通配符197
6.2.2泛型和數組的型變201
6.3 Kotlin中的泛型205
6.3.1 out T與in T 205
6.3.2聲明處型變206
6.3.3類型投影206
6.4泛型類207
6.5泛型函數208
6.6本章小結208
第7章面向對象編程209
7.1面向對象編程思想209
7.1.1一切皆是映射209
7.1.2二進制01與易經陰陽211
7.1. 3從面向過程到面向對象212
7.2類與構造函數215
7.2.1聲明類216
7.2.2構造函數216
7.2.3類的屬性218
7.2.4函數(方法) 219
7.3抽像類219
7.3.1抽像類的定義219
7.3.2抽象函數220
7.3.3抽象屬性和抽像類221
7.4接口223
7.4.1接口定義223
7.4.2實現接口224
7.4.3覆蓋衝突225
7.4.4接口中的屬性225
7.5抽像類和接口的差異226
7.6繼承227
7.6.1 open類227
7.6.2多重繼承228
7.7枚舉類230
7.7.1枚舉類基本用法231
7.7.2初始化枚舉值231
7.7.3使用枚舉常量232
7.8註解類233
7.8.1聲明註解233
7.8.2使用註解234
7.9單例模式與伴生對象234
7.9.1單例模式234
7.9.2 object對象235
7.9.3嵌套object對象236
7.9. 4匿名object 238
7.9.5伴生對象239
7.10密封類242
7.11數據類243
7.11.1構造函數中的val/var 243
7.11.2領域實體類245
7.11.3數據類的概念245
7.11.4數據類的限制246
7.11.5數據類的解構248
7.11.6標準數據類Pair和Triple 248
7.12嵌套類2
作者介紹
陳光劍阿里巴巴測試開發工程師,參與過多種平台工具的開發,具有豐富的平台開發經驗,操練過Java、Android、Scala、Groovy等語言進行領域建模、架構設計、工具開發等。在工作中善於總結,樂於分享,寫過大量技術文章。