Kotlin從基礎(chǔ)到實(shí)戰(zhàn)
定 價(jià):59.8 元
叢書(shū)名:Kotlin
- 作者:黑馬程序員
- 出版時(shí)間:2019/3/1
- ISBN:9787115494405
- 出 版 社:人民郵電出版社
- 中圖法分類(lèi):TP312.8
- 頁(yè)碼:284
- 紙張:
- 版次:01
- 開(kāi)本:16K
本書(shū)從初學(xué)者的角度詳細(xì)講解了Kotlin開(kāi)發(fā)中常用的多種技術(shù)。全書(shū)共13章,內(nèi)容包括Kotlin入門(mén)、Kotlin編程基礎(chǔ)、函數(shù)、面向?qū)ο蟆⒓、lambda編程、泛型、Gradle、協(xié)程、“坦克大戰(zhàn)”游戲開(kāi)發(fā)、DSL、Kotlin與Java互操作、時(shí)鐘。
本書(shū)通過(guò)典型的案例、通俗易懂的語(yǔ)言闡述面向?qū)ο笾械某橄蟾拍,在集合、Lambda編程、泛型、Gradle、協(xié)程等章節(jié)中,通過(guò)剖析案例、分析代碼結(jié)構(gòu)、解決常見(jiàn)問(wèn)題等方式,幫助初學(xué)者培養(yǎng)良好的編程習(xí)慣。第10章運(yùn)用前幾章的基礎(chǔ)知識(shí)實(shí)現(xiàn)了一個(gè)坦克大戰(zhàn)的游戲案例開(kāi)發(fā)。第11~13章分別介紹了DSL、Kotlin與Java進(jìn)行互操作以及通過(guò)Kotlin語(yǔ)言實(shí)現(xiàn)一個(gè)JavaScript語(yǔ)言的時(shí)鐘項(xiàng)目,幫助初學(xué)者掌握Kotlin語(yǔ)言與Java語(yǔ)言、JavaScript語(yǔ)言的互操作。
本書(shū)既可作為高等院校本、專(zhuān)科計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的教材,也可作為社會(huì)培訓(xùn)教材,是一本適合廣大編程愛(ài)好者參考和學(xué)習(xí)的書(shū)籍。為了幫助編程者更好地學(xué)習(xí)本書(shū)中的內(nèi)容,本書(shū)還提供了配套的源代碼與視頻等資源,方便讀者學(xué)習(xí)。
1.本書(shū)從基礎(chǔ)入門(mén)開(kāi)始,帶領(lǐng)讀者逐步學(xué)習(xí)Kotlin的相關(guān)技術(shù),最后以游戲開(kāi)發(fā)案例貫穿全書(shū);
2.全書(shū)配套教學(xué)視頻,幫助讀者全面掌握相關(guān)內(nèi)容。
黑馬程序員,傳智播客旗下高端IT教育品牌,成立于2006年,它是由中國(guó)Java培訓(xùn)領(lǐng)軍人張孝祥老師發(fā)起,聯(lián)合全球*大的中文IT社區(qū)CSDN、中關(guān)村軟件園共同創(chuàng)辦的一家專(zhuān)業(yè)教育機(jī)構(gòu)。辦學(xué)至今,我們一直堅(jiān)守著“為千萬(wàn)人少走彎路而著書(shū),為中華軟件之崛起而講課”的辦學(xué)理念,堅(jiān)持培養(yǎng)優(yōu)秀軟件應(yīng)用工程師的宏偉目標(biāo)。
第1章 Kotlin入門(mén) 1
1.1 Kotlin簡(jiǎn)介 1
1.1.1 Kotlin的前景 1
1.1.2 Kotlin的特性 2
1.2 Kotlin開(kāi)發(fā)環(huán)境搭建 3
1.2.1 Kotlin常用開(kāi)發(fā)工具 3
1.2.2 IntelliJ IDEA的安裝 3
1.3 開(kāi)發(fā)第一個(gè)Kotlin程序 6
1.4 本章小結(jié) 10
第2章 Kotlin編程基礎(chǔ) 11
2.1 Kotlin的基本語(yǔ)法 11
2.1.1 Kotlin代碼的基本格式 11
2.1.2 Kotlin中的注釋 12
2.2 Kotlin中的變量 13
2.2.1 變量的定義 13
2.2.2 變量的數(shù)據(jù)類(lèi)型 14
2.3 運(yùn)算符 16
2.3.1 算術(shù)運(yùn)算符 16
2.3.2 賦值運(yùn)算符 17
2.3.3 比較運(yùn)算符 18
2.3.4 邏輯運(yùn)算符 18
2.4 字符串 19
2.4.1 字符串的定義 19
2.4.2 字符串的常見(jiàn)操作 20
2.5 選擇結(jié)構(gòu)語(yǔ)句 25
2.5.1 if條件語(yǔ)句 26
2.5.2 when條件語(yǔ)句 30
2.6 循環(huán)結(jié)構(gòu)語(yǔ)句 32
2.6.1 while循環(huán)語(yǔ)句 32
2.6.2 do...while循環(huán)語(yǔ)句 33
2.6.3 for循環(huán)語(yǔ)句 34
2.6.4 循環(huán)嵌套 35
2.6.5 forEach循環(huán)語(yǔ)句 36
2.6.6 跳轉(zhuǎn)語(yǔ)句(continue、break) 37
2.7 區(qū)間 39
2.7.1 正向區(qū)間 39
2.7.2 逆向區(qū)間 40
2.7.3 步長(zhǎng) 40
2.8 數(shù)組 41
2.8.1 數(shù)組的定義 41
2.8.2 數(shù)組的常見(jiàn)操作 43
2.9 變量的類(lèi)型轉(zhuǎn)換 47
2.9.1 類(lèi)型檢查 47
2.9.2 智能類(lèi)型轉(zhuǎn)換 47
2.9.3 強(qiáng)制類(lèi)型轉(zhuǎn)換 48
2.10 空值處理 49
2.10.1 可空類(lèi)型變量( ) 49
2.10.2 安全調(diào)用符( .) 50
2.10.3 Elvis操作符( :) 50
2.10.4 非空斷言(!!.) 51
2.11 本章小結(jié) 52
第3章 函數(shù) 53
3.1 函數(shù)的介紹 53
3.1.1 函數(shù)的定義 53
3.1.2 函數(shù)的類(lèi)型 54
3.1.3 單表達(dá)式函數(shù) 55
3.1.4 函數(shù)的參數(shù) 56
3.2 函數(shù)的分類(lèi) 59
3.2.1 頂層函數(shù) 59
3.2.2 成員函數(shù) 60
3.2.3 局部函數(shù) 61
3.2.4 遞歸函數(shù) 62
3.2.5 尾遞歸函數(shù) 62
3.2.6 函數(shù)重載 64
3.3 本章小結(jié) 65
第4章 面向?qū)ο蟆?6
4.1 面向?qū)ο蟮母拍睢?6
4.2 類(lèi)與對(duì)象 67
4.2.1 類(lèi)的定義 67
4.2.2 對(duì)象的創(chuàng)建 67
4.2.3 類(lèi)的封裝 68
4.3 構(gòu)造函數(shù) 69
4.3.1 主構(gòu)函數(shù) 70
4.3.2 this關(guān)鍵字 70
4.3.3 次構(gòu)函數(shù) 71
4.4 類(lèi)的繼承 72
4.4.1 類(lèi)的繼承 72
4.4.2 方法重寫(xiě) 73
4.4.3 super關(guān)鍵字 74
4.5 抽象類(lèi)和接口 76
4.5.1 抽象類(lèi) 76
4.5.2 接口 77
4.6 常見(jiàn)類(lèi) 79
4.6.1 嵌套類(lèi) 79
4.6.2 內(nèi)部類(lèi) 80
4.6.3 枚舉類(lèi) 80
4.6.4 密封類(lèi) 81
4.6.5 數(shù)據(jù)類(lèi) 82
4.6.6 單例模式 82
4.6.7 伴生對(duì)象 83
4.7 委托 84
4.7.1 類(lèi)委托 84
4.7.2 屬性委托 85
4.7.3 延遲加載 87
4.8 異常 87
4.8.1 什么是異!87
4.8.2 try...catch和finally 88
4.8.3 throw關(guān)鍵字 91
4.8.4 受檢異常 92
4.8.5 自定義異!93
4.9 本章小結(jié) 95
第5章 集合 96
5.1 集合概述 96
5.2 List接口 98
5.2.1 List接口簡(jiǎn)介 98
5.2.2 不可變List 98
5.2.3 可變MutableList 101
5.3 Set接口 104
5.3.1 Set接口簡(jiǎn)介 104
5.3.2 不可變Set 104
5.3.3 可變MutableSet 106
5.4 Map接口 107
5.4.1 Map接口簡(jiǎn)介 107
5.4.2 不可變Map 107
5.4.3 可變MutableMap 109
5.5 本章小結(jié) 110
第6章 Lambda編程 111
6.1 Lambda表達(dá)式入門(mén) 111
6.1.1 Lambda表達(dá)式簡(jiǎn)介 111
6.1.2 Lambda表達(dá)式返回值 113
6.2 高階函數(shù)的使用 114
6.2.1 函數(shù)作為參數(shù)使用 115
6.2.2 函數(shù)作為參數(shù)優(yōu)化 115
6.2.3 函數(shù)作為返回值 118
6.3 標(biāo)準(zhǔn)庫(kù)中的高階函數(shù) 119
6.3.1 高階函數(shù)操作集合 119
6.3.2 標(biāo)準(zhǔn)庫(kù)中的高階函數(shù) 123
6.4 內(nèi)聯(lián)函數(shù) 127
6.4.1 使用內(nèi)聯(lián)函數(shù) 127
6.4.2 禁用內(nèi)聯(lián)函數(shù) 128
6.5 本章小結(jié) 128
第7章 泛型 129
7.1 泛型的定義 129
7.2 泛型的分類(lèi) 130
7.2.1 泛型類(lèi) 130
7.2.2 泛型接口 131
7.2.3 泛型方法 132
7.3 泛型約束 133
7.3.1 泛型約束的必要性 133
7.3.2 泛型約束 134
7.4 子類(lèi)和子類(lèi)型 136
7.4.1 繼承與子類(lèi)型 136
7.4.2 接口與子類(lèi)型 137
7.4.3 可空類(lèi)型的子類(lèi)型 137
7.5 協(xié)變與逆變 139
7.5.1 協(xié)變 139
7.5.2 逆變 140
7.5.3 點(diǎn)變型 141
7.6 泛型擦除與實(shí)化類(lèi)型 142
7.6.1 泛型擦除 142
7.6.2 泛型通配符 143
7.6.3 實(shí)化類(lèi)型 144
7.7 本章小結(jié) 145
第8章 Gradle 146
8.1 Gradle簡(jiǎn)介 146
8.2 Gradle程序 147
8.2.1 第一個(gè)Gradle程序 147
8.2.2 Java代碼與Kotlin代碼共存 152
8.3 Gradle的任務(wù) 153
8.3.1 Gradle中的project和task 153
8.3.2 Gradle任務(wù)的依賴(lài) 154
8.3.3 Gradle任務(wù)的生命周期 155
8.3.4 Gradle任務(wù)集 157
8.3.5 Gradle默認(rèn)屬性和任務(wù) 158
8.3.6 Gradle增量式更新任務(wù) 160
8.4 Gradle的依賴(lài) 162
8.4.1 Gradle的依賴(lài)包管理 162
8.4.2 公共倉(cāng)庫(kù)和依賴(lài)配置 162
8.5 Gradle擴(kuò)展 164
8.5.1 Gradle插件自定義擴(kuò)展 164
8.5.2 Gradle調(diào)用外部擴(kuò)展 165
8.6 本章小結(jié) 167
第9章 協(xié)程 168
9.1 協(xié)程簡(jiǎn)介 168
9.1.1 協(xié)程概述 168
9.1.2 協(xié)程的定義 169
9.1.3 線程與協(xié)程實(shí)現(xiàn)對(duì)比 169
9.2 協(xié)程的基本操作 171
9.2.1 協(xié)程掛起 171
9.2.2 掛起函數(shù) 172
9.2.3 主協(xié)程 172
9.2.4 協(xié)程中的Job任務(wù) 173
9.2.5 普通線程和守護(hù)線程 175
9.2.6 線程與協(xié)程效率對(duì)比 176
9.3 協(xié)程取消 177
9.3.1 協(xié)程取消 177
9.3.2 協(xié)程取消失效 180
9.3.3 定時(shí)取消 181
9.3.4 掛起函數(shù)的執(zhí)行順序 182
9.3.5 通過(guò)async啟動(dòng)協(xié)程 183
9.3.6 協(xié)程上下文和調(diào)度器 184
9.3.7 父子協(xié)程 185
9.4 管道 186
9.4.1 管道簡(jiǎn)介 186
9.4.2 管道的關(guān)閉 187
9.4.3 生產(chǎn)者與消費(fèi)者 188
9.4.4 管道緩存區(qū) 189
9.5 本章小結(jié) 190
第10章 坦克大戰(zhàn) 191
10.1 項(xiàng)目介紹 191
10.1.1 項(xiàng)目概述 191
10.1.2 開(kāi)發(fā)環(huán)境 191
10.1.3 效果展示 192
10.2 項(xiàng)目搭建 194
10.2.1 項(xiàng)目創(chuàng)建 194
10.2.2 添加游戲引擎 194
10.3 窗體設(shè)計(jì) 196
10.4 繪制游戲元素 198
10.4.1 繪制墻和草坪 198
10.4.2 繪制地圖 199
10.4.3 繪制我方坦克 201
10.5 我方坦克移動(dòng) 204
10.5.1 坦克的移動(dòng) 204
10.5.2 移動(dòng)碰撞處理 205
10.6 子彈 209
10.6.1 繪制子彈 209
10.6.2 計(jì)算子彈的位置 210
10.6.3 子彈飛行 213
10.6.4 銷(xiāo)毀脫離窗體的子彈 214
10.6.5 子彈的攻與受 216
10.6.6 爆炸物的顯示 220
10.7 敵方坦克 223
10.7.1 敵方坦克繪制 223
10.7.2 敵方坦克的移動(dòng) 224
10.7.3 敵方坦克自動(dòng)發(fā)射子彈 227
10.7.4 雙方坦克的相互傷害 229
10.8 大本營(yíng) 232
10.8.1 繪制大本營(yíng) 232
10.8.2 實(shí)現(xiàn)大本營(yíng)特性 234
10.9 游戲結(jié)束與打包 236
10.9.1 游戲的結(jié)束 236
10.9.2 Gradle打包游戲 240
10.10 本章小結(jié) 242
第11章 DSL 243
11.1 DSL簡(jiǎn)介 243
11.1.1 DSL概述 243
11.1.2 DSL程序 244
11.2 DSL的使用 246
11.2.1 打印簡(jiǎn)單的HTML標(biāo)簽 246
11.2.2 打印復(fù)雜的HTML標(biāo)簽 247
11.3 Anko插件 249
11.4 本章小結(jié) 250
第12章 Kotlin與Java互
操作 251
12.1 在Kotlin中調(diào)用Java 251
12.1.1 調(diào)用Java中的getter/setter方法 251
12.1.2 調(diào)用Java中的@NotNull注解 252
12.1.3 調(diào)用Java中的靜態(tài)成員 253
12.1.4 SAM轉(zhuǎn)換 254
12.2 在Java中調(diào)用Kotlin 255
12.2.1 調(diào)用Kotlin中的包級(jí)函數(shù) 255
12.2.2 調(diào)用Kotlin中的實(shí)例字段 256
12.2.3 調(diào)用Kotlin中的靜態(tài)字段和
方法 257
12.2.4 調(diào)用Kotlin中的集合類(lèi) 258
12.2.5 顯式申明Kotlin中的異!259
12.2.6 關(guān)鍵字沖突的互操作 260
12.3 Kotlin與Java中的操作
對(duì)比 261
12.3.1 語(yǔ)法格式對(duì)比 261
12.3.2 異常檢查對(duì)比 263
12.3.3 可變參數(shù)對(duì)比 264
12.3.4 類(lèi)的class對(duì)象對(duì)比 265
12.3.5 成員控制權(quán)限對(duì)比 266
12.3.6 默認(rèn)參數(shù)函數(shù)對(duì)比 267
12.4 本章小結(jié) 268
第13章 時(shí)鐘 269
13.1 時(shí)鐘項(xiàng)目簡(jiǎn)介 269
13.1.1 項(xiàng)目概述 269
13.1.2 開(kāi)發(fā)環(huán)境 269
13.2 創(chuàng)建時(shí)鐘項(xiàng)目 270
13.2.1 創(chuàng)建項(xiàng)目 270
13.2.2 初始化畫(huà)布 271
13.3 繪制基本元素 273
13.3.1 繪制直線、三角形、矩形 273
13.3.2 繪制圓形 275
13.3.3 填充圖形 276
13.3.4 繪制文本 277
13.4 繪制時(shí)鐘 277
13.4.1 繪制時(shí)鐘的圓環(huán) 277
13.4.2 繪制60個(gè)圓點(diǎn) 278
13.4.3 繪制時(shí)鐘的數(shù)字 279
13.4.4 繪制時(shí)鐘的指針 280
13.4.5 設(shè)置當(dāng)前時(shí)間 283
13.5 本章小結(jié) 284