內(nèi) 容 提 要
本書分3部分講解Kotlin,第1部分(第1~11章)是Kotlin語言的基礎(chǔ)部分,主要介紹了Kotlin的基礎(chǔ)知識、語法以及大量的語法糖,如搭建Kotlin開發(fā)環(huán)境、數(shù)據(jù)類型、控制流、類、對象、接口、擴(kuò)展、委托、Lambda表達(dá)式、操作符重載等。第2部分(第12~15章)主要介紹了如何用Kotlin開發(fā)Android App。由于Kotlin可以調(diào)用JDK中的API,所以在使用Kotlin開發(fā)Android App的過程中,很多都是調(diào)用JDK的API實(shí)現(xiàn)的,但開發(fā)語言使用的是Kotlin。因此,這一部分詳細(xì)介紹了用Kotlin開發(fā)Android App 需要掌握的核心知識,如Activity、組件、布局、流文件、SQLite數(shù)據(jù)庫、網(wǎng)絡(luò)等技術(shù)。第3部分(第16章)是一個(gè)完整的案例:歐瑞天氣。通過這個(gè)項(xiàng)目,可以讓讀者了解利用Kotlin開發(fā)Android App的全過程。
書 視頻學(xué)習(xí) 學(xué)習(xí)效果測試 開發(fā)闖關(guān)測試 項(xiàng)目實(shí)戰(zhàn),貼心跟蹤讀者學(xué)習(xí)效果,學(xué)習(xí)Kotlin這一本就夠!
基于新的Kotlin版本
一本全程視頻陪伴,貼心跟蹤初學(xué)者學(xué)習(xí)效果的Kotlin開發(fā)書
贈送近70小時(shí)視頻課程,包括Kotlin和Android開發(fā),供讀者學(xué)習(xí)使用
通過Kotlin開發(fā)題庫提供大量的測試題以及過關(guān)系統(tǒng),讀者可以用通關(guān)的方式更有效地學(xué)習(xí)書中的知識,提高學(xué)習(xí)的效率
隨時(shí)互動(dòng)答疑,有問題的學(xué)員可以通過歐瑞科技的問答社區(qū)(https://geekori.com)提問,會有專人回答讀者提出的問題,以及通過博客系統(tǒng)總結(jié)書中學(xué)到的知識,同時(shí),提出問題、回答問題以及撰寫的博客越多,就會增加讀者的積分,以后學(xué)習(xí)李寧老師其他的課程和獲取其他資源,會有更大的優(yōu)惠。
李寧,歐瑞科技創(chuàng)始人,極客起源IT問答社區(qū)(https://geekori.com)創(chuàng)始人,歐瑞學(xué)院金-牌講師,計(jì)算機(jī)專業(yè)碩士。擁有近20年軟件開發(fā)經(jīng)驗(yàn),10年企業(yè)內(nèi)訓(xùn)經(jīng)驗(yàn)。曾任國內(nèi)某大型軟件公司項(xiàng)目經(jīng)理。CSDN博客專家、CSDN學(xué)院簽約講師、51CTO學(xué)院特級講師。長久以來一直從事JavaScript、Node.js、Java、Kotlin、Python、Android、iOS、C 、Hadoop、Spark、深度學(xué)習(xí)的開發(fā)和技術(shù)指導(dǎo)工作。對國內(nèi)外相關(guān)領(lǐng)域的技術(shù)、理論和實(shí)踐有很深的理解和研究。目前已經(jīng)出版超過30本IT暢銷書,主要著作包括《Kotlin程序開發(fā)入門精要》《Android深度探索 卷1和卷2》《Android開發(fā)權(quán)威指南 第1版和第2版》等。
目 錄
第1章 Kotlin開發(fā)環(huán)境搭建1
1.1 Kotlin概述1
1.1.1 Kotlin是什么1
1.1.2 為什么Kotlin突然成為熱門2
1.1.3 Kotlin相對于Java有哪些優(yōu)勢2
1.1.4 Kotlin能做什么3
1.2 在線運(yùn)行Kotlin代碼3
1.3 安裝和配置Kotlin6
1.3.1 安裝和配置JDK6
1.3.2 Windows下安裝和
配置Kotlin9
1.3.3 Mac OS X下安裝和
配置Kotlin10
1.4 測試Kotlin編譯和運(yùn)行環(huán)境10
1.4.1 命令行方式使用Kotlin11
1.4.2 Kotlin的REPL環(huán)境13
1.4.3 在命令行中運(yùn)行腳本文件14
1.4.4 在瀏覽器中運(yùn)行Kotlin程序14
1.4.5 使用Node.js運(yùn)行Kotlin程序16
1.4.6 在微信小程序中運(yùn)行Kotlin
程序17
1.4.7 用Kotlin開啟全棧開發(fā)模式21
1.5 Kotlin中的語法糖22
1.6 Kotlin的集成開發(fā)環(huán)境(IDE)24
1.6.1 IntelliJ IDEA 的Kotlin基礎(chǔ)開發(fā)
環(huán)境25
1.6.2 使用Android Studio和Kotlin開發(fā)
Android App29
1.7 小結(jié)34
第2章 Kotlin基礎(chǔ)知識35
2.1 Kotlin的基本語法35
2.1.1 定義變量35
2.1.2 定義函數(shù)36
2.1.3 注釋37
2.2 基礎(chǔ)數(shù)據(jù)類型37
2.2.1 數(shù)值類型38
2.2.2 字符類型39
2.2.3 布爾類型41
2.2.4 數(shù)組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循環(huán)48
2.4.4 while循環(huán)49
2.5 小結(jié)50
第3章 類和接口51
3.1 類的聲明51
3.2 構(gòu)造器51
3.2.1 主構(gòu)造器51
3.2.2 第二構(gòu)造器53
3.2.3 Kotlin中的Singleton模式54
3.2.4 Kotlin函數(shù)中的默認(rèn)參數(shù)55
3.2.5 創(chuàng)建類的實(shí)例58
3.3 類成員58
3.3.1 屬性的基本用法58
3.3.2 屬性的getter和setter形式60
3.3.3 保存屬性值的字段60
3.3.4 函數(shù)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 小結(jié)68
第4章 枚舉類和擴(kuò)展69
4.1 枚舉類69
4.1.1 枚舉類的基本用法69
4.1.2 為枚舉值指定對應(yīng)的數(shù)值70
4.1.3 枚舉類的其他功能71
4.2 擴(kuò)展72
4.2.1 擴(kuò)展原生API72
4.2.2 擴(kuò)展自定義類73
4.2.3 成員函數(shù)沖突的解決方案75
4.2.4 擴(kuò)展屬性76
4.2.5 擴(kuò)展伴隨對象
(Companion Object)76
4.2.6 擴(kuò)展的范圍77
4.2.7 在類中使用擴(kuò)展77
4.2.8 調(diào)用特定類的成員函數(shù)78
4.2.9 擴(kuò)展成員的繼承79
4.3 小結(jié)80
第5章 數(shù)據(jù)類和封閉類81
5.1 數(shù)據(jù)類(Data Class)81
5.1.1 使用數(shù)據(jù)類81
5.1.2 對象復(fù)制84
5.1.3 數(shù)據(jù)類成員的解構(gòu)85
5.2 封閉類(Sealed Classes)86
5.3 小結(jié)86
第6章 泛型87
6.1 泛型基礎(chǔ)87
6.2 類型變異88
6.3 類型投射90
6.4 星號投射92
6.5 泛型函數(shù)92
6.6 泛型約束93
6.7 小結(jié)93
第7章 對象和委托94
7.1 對象94
7.1.1 對象表達(dá)式94
7.1.2 聲明匿名對象97
7.1.3 訪問封閉作用域內(nèi)的變量97
7.1.4 陪伴對象99
7.2 委托99
7.2.1 類的委托99
7.2.2 委托屬性100
7.2.3 委托類的初始化函數(shù)102
7.2.4 委托的前提條件104
7.3 標(biāo)準(zhǔn)委托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 小結(jié)108
第8章 高階函數(shù)與Lambda表達(dá)式109
8.1 高階函數(shù)109
8.2 Lambda表達(dá)式與匿名函數(shù)110
8.2.1 函數(shù)類型111
8.2.2 Lambda表達(dá)式的語法111
8.2.3 匿名函數(shù)112
8.2.4 閉包(Closure)113
8.3 小結(jié)113
第9章 函數(shù)114
9.1 函數(shù)基本用法114
9.2 使用中綴標(biāo)記法調(diào)用函數(shù)114
9.3 單表達(dá)式函數(shù)115
9.4 函數(shù)參數(shù)和返回值116
9.4.1 可變參數(shù)116
9.4.2 返回值類型117
9.5 函數(shù)的范圍117
9.5.1 局部函數(shù)117
9.5.2 成員函數(shù)118
9.6 泛型函數(shù)118
9.7 內(nèi)聯(lián)函數(shù)119
9.7.1 讓Lambda表達(dá)式內(nèi)聯(lián)進(jìn)
函數(shù)119
9.7.2 內(nèi)聯(lián)部分Lambda表達(dá)式121
9.7.3 非局部返回
(Non-local return)124
9.7.4 實(shí)體化的類型參數(shù)
(Reified type parameter)125
9.7.5 內(nèi)聯(lián)屬性126
9.8 小結(jié)127
第10章 其他Kotlin技術(shù)(1)128
10.1 數(shù)據(jù)解構(gòu)128
10.2 集合130
10.3 值范圍132
10.3.1 值范圍的應(yīng)用132
10.3.2 值范圍的工作原理134
10.3.3 常用工具函數(shù)135
10.4 類型檢查與類型轉(zhuǎn)換136
10.4.1 is與!is操作符136
10.4.2 智能類型轉(zhuǎn)換138
10.4.3 強(qiáng)行類型轉(zhuǎn)換139
10.5 this表達(dá)式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 小結(jié)149
第11章 其他Kotlin技術(shù)(2)150
11.1 null值安全性150
11.1.1 可為null的類型與不可為null
的類型150
11.1.2 在條件語句中進(jìn)行null檢查151
11.1.3 安全調(diào)用操作符152
11.1.4 Elvis操作符152
11.1.5 !!操作符153
11.1.6 安全的類型轉(zhuǎn)換153
11.1.7 可為null的類型構(gòu)成的集合153
11.2 異常類153
11.3 注解(Annotations)155
11.3.1 使用注解156
11.3.2 注解類的構(gòu)造器157
11.3.3 Lambda表達(dá)式158
11.4 反射(Reflection)158
11.4.1 類引用(Class Reference)159
11.4.2 枚舉類成員159
11.4.3 動(dòng)態(tài)調(diào)用成員函數(shù)161
11.4.4 動(dòng)態(tài)調(diào)用成員屬性161
11.5 小結(jié)163
第12章 Android的窗口Activity164
12.1 什么是Activity164
12.2 Activity的基本用法164
12.2.1 創(chuàng)建一個(gè)不包含任何Activity
的Android工程165
12.2.2 手動(dòng)創(chuàng)建Activity167
12.2.3 創(chuàng)建和加載布局168
12.2.4 在AndroidManifest文件中注冊
Activity172
12.2.5 編譯和運(yùn)行Android工程172
12.2.6 為Activity添加新組件173
12.2.7 為Activity添加邏輯代碼174
12.2.8 為Activity添加Toast175
12.2.9 關(guān)閉Activity178
12.3 使用Intent連接多個(gè)Activity178
12.3.1 使用顯式Intent179
12.3.2 使用隱式Intent182
12.3.3 為隱式Intent設(shè)置更多的過濾
條件185
12.3.4 使用隱式Intent訪問
系統(tǒng)App187
12.4 向Activity中傳遞數(shù)據(jù)189
12.5 從Activity返回?cái)?shù)據(jù)191
12.6 Activity的生命周期192
12.7 記錄當(dāng)前活動(dòng)的Activity196
12.8 小結(jié)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 進(jìn)度條組件(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 小結(jié)230
第14章 永久保存數(shù)據(jù)的方式
持久化技術(shù)231
14.1 SharedPreferences存儲231
14.1.1 將數(shù)據(jù)存儲到SharedPreferences
中231
14.1.2 從SharedPreferences讀取
數(shù)據(jù)234
14.1.3 利用SharedPreferences存取用戶名
和密碼235
14.2 文件流操作239
14.2.1 openFileOutput和openFileInput
方法239
14.2.2 讀寫SD卡上的文件242
14.3 App權(quán)限的授予和拒絕248
14.4 讀寫JSON格式的數(shù)據(jù)250
14.5 SQLite數(shù)據(jù)庫257
14.5.1 SQLite數(shù)據(jù)庫管理
工具257
14.5.2 創(chuàng)建SQLite數(shù)據(jù)庫和
數(shù)據(jù)表261
14.5.3 向SQLite數(shù)據(jù)表中插入
數(shù)據(jù)264
14.5.4 刪除SQLite數(shù)據(jù)表中的
數(shù)據(jù)265
14.5.5 更新SQLite數(shù)據(jù)表中的
數(shù)據(jù)266
14.5.6 查詢SQLite表中的數(shù)據(jù)267
14.5.7 將數(shù)據(jù)庫與App一起
發(fā)布268
14.6 小結(jié)270
第15章 連接外部世界網(wǎng)絡(luò)技術(shù)271
15.1 WebView組件271
15.2 使用HTTP與服務(wù)端進(jìn)行交互273
15.2.1 使用HttpURLConnection273
15.2.2 使用OkHttp276
15.3 小結(jié)282
第16章 項(xiàng)目實(shí)戰(zhàn)歐瑞天氣App283
16.1 項(xiàng)目概述283
16.2 添加依賴284
16.3 實(shí)現(xiàn)主窗口285
16.4 顯示地區(qū)列表286
16.4.1 描述城市信息的數(shù)據(jù)類286
16.4.2 處理JSON格式的城市列表
信息286
16.4.3 天氣信息描述類288
16.4.4 獲取城市信息的對象290
16.4.5 在ListView組件中顯示地區(qū)
列表293
16.5 顯示天氣信息298
16.6 小結(jié)303