本書(shū)分為3篇:*篇,基礎(chǔ)語(yǔ)法篇,主要講解*基礎(chǔ)的面向過(guò)程式語(yǔ)法;第二篇,面向?qū)ο笃斀釱otlin的面向?qū)ο螅坏谌琄otlin 安卓開(kāi)發(fā)篇,主要講解開(kāi)發(fā)工具Android Studio的使用、UI常用組件和Kotlin開(kāi)發(fā)框架Anko的應(yīng)用,且以兩個(gè)小實(shí)戰(zhàn)展示Kotlin在安卓平臺(tái)的實(shí)際開(kāi)發(fā)能力。
前 言
在開(kāi)始本書(shū)之前,簡(jiǎn)單介紹Kotlin的歷史與發(fā)展方向。2017年5月,谷歌2017年度I/O大會(huì)上除了宣布熱門(mén)的人工智能技術(shù),還宣布把Kotlin作為安卓開(kāi)發(fā)的首選語(yǔ)言,以及逐步取代歷史悠久的Java語(yǔ)言在安卓開(kāi)發(fā)中的地位。
除了谷歌與Java版權(quán)方Oracle有官司影響安卓發(fā)展的這個(gè)因素以外,Kotlin這門(mén)課程從發(fā)明到發(fā)展,已經(jīng)有6年的歷史,此次算是地位扶正、一朝登頂,很多Kotlin愛(ài)好者把它稱作今年最好的消息,對(duì)于業(yè)界,以及要入行的廣大新手來(lái)說(shuō),很顯然也是一次重大的機(jī)會(huì)。
作為一個(gè)關(guān)注移動(dòng)開(kāi)發(fā)領(lǐng)域的開(kāi)發(fā)者及培訓(xùn)講師,我也不甘人后,第一時(shí)間看完了英文版的官方教程并于第一天在51CTO、騰訊課堂上推出了一個(gè)簡(jiǎn)單的實(shí)戰(zhàn)課程,體驗(yàn)過(guò)后才知道Kotlin是多么方便和暢快。觀眾也有非常熱烈的討論和回饋,學(xué)習(xí)氣氛非常濃厚。可見(jiàn)這門(mén)新語(yǔ)言的熱度之高和市場(chǎng)之大。
Kotlin這種地位的取得與Kotlin本身的各種現(xiàn)代化編程語(yǔ)言特性分不開(kāi),像蘋(píng)果的Swift語(yǔ)言一樣,簡(jiǎn)潔、安全、現(xiàn)代是其賣點(diǎn),再加上無(wú)縫兼容現(xiàn)有的Java代碼,有眼光的安卓開(kāi)發(fā)者早就運(yùn)用多年,所以此種正名也是眾望所歸,谷歌大會(huì)上獲取掌聲最大也證明了對(duì)Kotlin的廣泛認(rèn)可。
很榮幸應(yīng)電子工業(yè)出版社之邀編寫(xiě)本書(shū),本打算只編寫(xiě)語(yǔ)法部分,可后來(lái)覺(jué)得實(shí)在是干貨太少,于是加入Kotlin與安卓開(kāi)發(fā)的部分,并隨后附上一個(gè)小型實(shí)戰(zhàn)App并加上Kotlin服務(wù)端有關(guān)的內(nèi)容,以便將內(nèi)容向全棧方向推進(jìn),各位讀者可能覺(jué)得買了也更有價(jià)值。追加部分的內(nèi)容由兩位優(yōu)秀的在校大學(xué)生王卓和沈家瑜及他們的小伙伴們大力支持和編寫(xiě)。
本書(shū)分為3篇:第一篇,基礎(chǔ)語(yǔ)法篇,主要講解最基礎(chǔ)的面向過(guò)程式語(yǔ)法;第二篇,面向?qū)ο笃斀釱otlin的面向?qū)ο螅坏谌琄otlin 安卓開(kāi)發(fā)篇,主要講解開(kāi)發(fā)工具Android Studio的使用、UI常用組件和Kotlin開(kāi)發(fā)框架Anko的應(yīng)用,且以兩個(gè)小實(shí)戰(zhàn)展示Kotlin在安卓平臺(tái)的實(shí)際開(kāi)發(fā)能力。如本書(shū)閱讀中遇到問(wèn)題,您可進(jìn)群:18247468與眾多開(kāi)發(fā)者溝通或者下載相關(guān)資料。
張?jiān)撇ǎ欠Q小波,網(wǎng)絡(luò)知名講師,《小波說(shuō)雨燕》系列視頻作者,目前致力于移動(dòng)開(kāi)發(fā)培訓(xùn)領(lǐng)域。曾在IBM/HP/神州數(shù)碼/埃森哲/SONY/SAP等公司從事商業(yè)軟件開(kāi)發(fā)相關(guān)工作,有海外工作經(jīng)驗(yàn),英語(yǔ)日語(yǔ)熟練。 參與項(xiàng)目:iCard信用卡/國(guó)家電網(wǎng)&上海電力互通3期/文雅科BI產(chǎn)品綜合測(cè)試/Charment II/日本某音樂(lè)APP/夏普Sharp無(wú)錫液晶屏QS-I/淘寶某第三方平臺(tái)分銷APP/葛蘭素史克-新藥銷售代表用APP/輝瑞新藥推廣APP 。
目 錄
第1篇 基礎(chǔ)語(yǔ)法篇1
第1章 Kotlin初入門(mén)2
1.1 練習(xí)環(huán)境配置2
1.2 Hello World程序9
1.3 常量與變量11
第2章 Kotlin基礎(chǔ)15
2.1 整數(shù)型和類型推斷15
2.2 浮點(diǎn)型(小數(shù))17
2.3 類型安全18
2.4 布爾型18
2.5 元組20
2.6 可空類型(nullable)20
2.7 基礎(chǔ)操作符21
2.8 package和import25
2.9 異常處理和類初始化26
2.10 引用相等和結(jié)構(gòu)相等27
2.11 區(qū)間(Range)28
2.12 控制流作為表達(dá)式29
2.13 函數(shù)返回34
2.14 類型層級(jí)34
2.15 循環(huán)35
第3章 控制流37
3.1 二元判斷37
3.2 循環(huán)38
3.3 多元判斷44
第4章 字符串和字符46
4.1 字符串46
4.2 字符52
第5章 函數(shù)54
5.1 函數(shù)定義和使用54
5.2 函數(shù)的作用范圍56
5.3 命名參數(shù)和默認(rèn)參數(shù)60
5.4 函數(shù)操作符63
5.5 函數(shù)擴(kuò)展68
5.6 函數(shù)字面量71
5.7 尾遞歸函數(shù)72
5.8 標(biāo)準(zhǔn)庫(kù)函數(shù)73
5.9 泛型函數(shù)77
第6章 Lambda和高階函數(shù)79
6.1 Lambda表達(dá)式79
6.2 高階函數(shù)81
第7章 集合類型84
7.1 Array數(shù)組84
7.2 MutableList可變列表92
7.3 Set94
7.4 MutableSet96
7.5 Java中的各種集合97
7.6 Map97
7.7 MutableMap102
7.8 集合類型共性詳解104
第2篇 面向?qū)ο笃?13
第8章 初識(shí)對(duì)象114
8.1 萬(wàn)物皆對(duì)象114
8.2 用Kotlin描述對(duì)象115
8.3 愉快的構(gòu)造121
8.4 屬性128
第9章 類的進(jìn)階136
9.1 繼承136
9.2 抽象類,重寫(xiě)和重載144
9.3 接口146
9.4 修飾符152
9.5 擴(kuò)展160
第10章 多彩的類173
10.1 數(shù)據(jù)類173
10.2 密封類183
10.3 泛型186
10.4 嵌套類195
10.5 枚舉類201
10.6 對(duì)象213
10.7 委托223
第11章 關(guān)于對(duì)象的小細(xì)節(jié)241
11.1 類型檢查與類型轉(zhuǎn)換241
11.2 異常錯(cuò)誤處理246
11.3 結(jié)構(gòu)相等與引用相等254
11.4 this表達(dá)式257
11.5 類型別名263
第12章 面向?qū)ο蟾呒?jí)部分268
12.1 操作符重載268
12.2 反射282
12.3 維護(hù)初步288
第3篇 Kotlin安卓開(kāi)發(fā)篇
第13章 UI界面基礎(chǔ)296
13.1 Android UI簡(jiǎn)介296
13.2 基類View和容器ViewGroup296
13.3 Anko簡(jiǎn)介302
13.4 Anko Layout DSL302
13.5 基本布局315
13.6 基礎(chǔ)UI組件331
13.7 進(jìn)階UI組件353
第14章 Activity與Fragment367
14.1 Activity367
14.2 Fragment375
第15章 Service與Broadcast Receiver380
15.1 Service380
15.2 Android廣播接收器(Broadcast Receivers)396
第16章 Kotlin多線程編程404
16.1 進(jìn)程?線程?404
16.2 Android開(kāi)發(fā)中多線程的必要性405
16.3 Kotlin中的Executors414
第17章 Android數(shù)據(jù)存儲(chǔ)416
17.1 SharePreferences416
17.2 文件存儲(chǔ)數(shù)據(jù)418
17.3 SQLite數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)421
17.4 ContentProvider存儲(chǔ)數(shù)據(jù)430
17.5 網(wǎng)絡(luò)存儲(chǔ)數(shù)據(jù)433
第18章 Kotlin網(wǎng)絡(luò)編程434
18.1 基于TCP/IP 協(xié)議棧的網(wǎng)絡(luò)編程434
18.2 基于HTTP的網(wǎng)絡(luò)通信436
18.3 HTTPConnection438
18.4 HTTP庫(kù)Fuel439
18.5 數(shù)據(jù)交換格式-JSON簡(jiǎn)介443
18.6 Demo:IP查詢445
18.7 WebView450
第19章 Demo:天氣462
19.1 架構(gòu)設(shè)計(jì)462
19.2 分析數(shù)據(jù)源462
19.3 Android 開(kāi)發(fā)471
第20章 Demo:網(wǎng)易云音樂(lè)500
20.1 項(xiàng)目簡(jiǎn)介500
20.2 服務(wù)器端部署500
20.3 Android端開(kāi)發(fā)501
20.4 用戶登錄界面與功能505
20.5 主界面510
20.6 Rank排行榜511
20.7 Rank子頁(yè)面520
20.8 播放頁(yè)524
20.9 私人FM536
20.10 個(gè)人頁(yè)面542