Kotlin程序開發入門精要
內容描述
內 容 提 要
本書分3部分講解Kotlin,第1部分(第1~11章)是Kotlin語言的基礎部分,主要介紹了Kotlin的基礎知識、語法以及大量的“語法糖”,如搭建Kotlin開發環境、數據類型、控制流、類、對象、接口、擴展、委托、Lambda表達式、操作符重載等。第2部分(第12~15章)主要介紹瞭如何用Kotlin開發Android App。由於Kotlin可以調用JDK中的API,所以在使用Kotlin開發Android App的過程中,很多都是調用JDK的API實現的,但開發語言使用的是Kotlin。因此,這一部分詳細介紹了用Kotlin開發Android App 需要掌握的核心知識,如Activity、組件、佈局、流文件、SQLite數據庫、網絡等技術。第3部分(第16章)是一個完整的案例:歐瑞天氣。通過這個項目,可以讓讀者瞭解利用Kotlin開發Android App的全過程。
海報:
目錄大綱
目錄
第1章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
第10章其他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.1一元操作符重載141
10.7.2二元操作符142
10.7.3方括號操作符重載144
10.7.4賦值操作符重載146
10.7.5邏輯操作符重載147
10.8小結149
第11章其他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
第12章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
第13章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
第14章永久保存數據的方式——
持久化技術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
第15章連接外部世界——網絡技術271
15.1 WebView組件271
15.2使用HTTP與服務端進行交互273
15.2.1使用HttpURLConnection 273
15.2. 2使用OkHttp 276
15.3小結282
第16章項目實戰——歐瑞天氣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