內 容 提 要
本書分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的全過程。
書 視頻學習 學習效果測試 開發闖關測試 項目實戰,貼心跟蹤讀者學習效果,學習Kotlin這一本就夠!
基于新的Kotlin版本
一本全程視頻陪伴,貼心跟蹤初學者學習效果的Kotlin開發書
贈送近70小時視頻課程,包括Kotlin和Android開發,供讀者學習使用
通過Kotlin開發題庫提供大量的測試題以及過關系統,讀者可以用通關的方式更有效地學習書中的知識,提高學習的效率
隨時互動答疑,有問題的學員可以通過歐瑞科技的問答社區(https://geekori.com)提問,會有專人回答讀者提出的問題,以及通過博客系統總結書中學到的知識,同時,提出問題、回答問題以及撰寫的博客越多,就會增加讀者的積分,以后學習李寧老師其他的課程和獲取其他資源,會有更大的優惠。
李寧,歐瑞科技創始人,極客起源IT問答社區(https://geekori.com)創始人,歐瑞學院金-牌講師,計算機專業碩士。擁有近20年軟件開發經驗,10年企業內訓經驗。曾任國內某大型軟件公司項目經理。CSDN博客專家、CSDN學院簽約講師、51CTO學院特級講師。長久以來一直從事JavaScript、Node.js、Java、Kotlin、Python、Android、iOS、C 、Hadoop、Spark、深度學習的開發和技術指導工作。對國內外相關領域的技術、理論和實踐有很深的理解和研究。目前已經出版超過30本IT暢銷書,主要著作包括《Kotlin程序開發入門精要》《Android深度探索 卷1和卷2》《Android開發權威指南 第1版和第2版》等。
目 錄
第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 安裝和配置Kotlin6
1.3.1 安裝和配置JDK6
1.3.2 Windows下安裝和
配置Kotlin9
1.3.3 Mac OS X下安裝和
配置Kotlin10
1.4 測試Kotlin編譯和運行環境10
1.4.1 命令行方式使用Kotlin11
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 App29
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 擴展原生API72
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的窗口Activity164
12.1 什么是Activity164
12.2 Activity的基本用法164
12.2.1 創建一個不包含任何Activity
的Android工程165
12.2.2 手動創建Activity167
12.2.3 創建和加載布局168
12.2.4 在AndroidManifest文件中注冊
Activity172
12.2.5 編譯和運行Android工程172
12.2.6 為Activity添加新組件173
12.2.7 為Activity添加邏輯代碼174
12.2.8 為Activity添加Toast175
12.2.9 關閉Activity178
12.3 使用Intent連接多個Activity178
12.3.1 使用顯式Intent179
12.3.2 使用隱式Intent182
12.3.3 為隱式Intent設置更多的過濾
條件185
12.3.4 使用隱式Intent訪問
系統App187
12.4 向Activity中傳遞數據189
12.5 從Activity返回數據191
12.6 Activity的生命周期192
12.7 記錄當前活動的Activity196
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 使用HttpURLConnection273
15.2.2 使用OkHttp276
15.3 小結282
第16章 項目實戰歐瑞天氣App283
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