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