內容簡介
Kotlin權威2.0:Android專家養成術
內容簡介
★ Amazon好評不斷!Kotlin入門與進階一書掌握!
★ 助你贏得Google、Facebook、Microsoft等巨頭公司青睞的培訓講義
原文版讀者評論
「我有Java程式設計背景,但我認為本書同樣適合零基礎的初學者使用。跟隨本書學習Kotlin程式設計非常輕鬆。」
「本書不僅告訴你怎樣做,而且還告訴你為何這樣做。每一章的練習題和範例程式碼都配合得天衣無縫。」
「這不是一本對Kotlin泛泛而談的書,而是一本出色的指導手冊:條理清晰、可讀性強、範圍明確,有參考價值。閱讀之後的收穫非常大。」
「範例專案易於上手,講解也非常清晰,是Android開發者不容錯過的一本書。」
本書特色
♦ 源自大名鼎鼎的 Big Nerd Ranch 訓練營培訓講義,該訓練營已經為Google、Facebook、Microsoft等行業巨頭培養了眾多專業人才。
♦ 以循序漸進的方式精心編排章節,從基礎的變數與集合開始,逐漸深入至物件導向程式設計與函數式程式設計技術。
♦ 透過建置各種範例專案,在實踐中掌握Kotlin程式設計語言。
♦ 多章設有「深入學習」和「挑戰練習」環節,幫你鞏固所學知識。
♦ 本書所有應用程式與介面、平台,皆更新至繁體中文版出版日為止之最新版本。
內容簡介
★ Amazon好評不斷!Kotlin入門與進階一書掌握!
★ 助你贏得Google、Facebook、Microsoft等巨頭公司青睞的培訓講義
原文版讀者評論
「我有Java程式設計背景,但我認為本書同樣適合零基礎的初學者使用。跟隨本書學習Kotlin程式設計非常輕鬆。」
「本書不僅告訴你怎樣做,而且還告訴你為何這樣做。每一章的練習題和範例程式碼都配合得天衣無縫。」
「這不是一本對Kotlin泛泛而談的書,而是一本出色的指導手冊:條理清晰、可讀性強、範圍明確,有參考價值。閱讀之後的收穫非常大。」
「範例專案易於上手,講解也非常清晰,是Android開發者不容錯過的一本書。」
本書特色
♦ 源自大名鼎鼎的 Big Nerd Ranch 訓練營培訓講義,該訓練營已經為Google、Facebook、Microsoft等行業巨頭培養了眾多專業人才。
♦ 以循序漸進的方式精心編排章節,從基礎的變數與集合開始,逐漸深入至物件導向程式設計與函數式程式設計技術。
♦ 透過建置各種範例專案,在實踐中掌握Kotlin程式設計語言。
♦ 多章設有「深入學習」和「挑戰練習」環節,幫你鞏固所學知識。
♦ 本書所有應用程式與介面、平台,皆更新至繁體中文版出版日為止之最新版本。
作者簡介
作者簡介
喬希•斯基恩(Josh Skeen)
軟體開發工程師,Big Nerd Ranch培訓師,在世界各地講授Java、Android應用開發以及Kotlin的課程。
畢業於柯柏高等科學藝術聯盟學院 (Cooper Union,The Cooper Union for the Advancement of Science and Art )。
戴維•格林哈爾希(David Greenhalgh)
Android開發人員,Big Nerd Ranch培訓師。
畢業於喬治亞理工學院 (Georgia Institute of Technology )。
喬希•斯基恩(Josh Skeen)
軟體開發工程師,Big Nerd Ranch培訓師,在世界各地講授Java、Android應用開發以及Kotlin的課程。
畢業於柯柏高等科學藝術聯盟學院 (Cooper Union,The Cooper Union for the Advancement of Science and Art )。
戴維•格林哈爾希(David Greenhalgh)
Android開發人員,Big Nerd Ranch培訓師。
畢業於喬治亞理工學院 (Georgia Institute of Technology )。
內容目錄
目錄
Chapter 01 Kotlin 應用開發初體驗
1.1 安裝IntelliJ IDEA
1.2 第一個Kotlin 專案
1.3 Kotlin REPL
1.4 深入學習:為什麼要用IntelliJ
1.5 深入學習:JVM 導向
1.6 挑戰練習:使用REPL 研究Kotlin 中的算數運算子
Chapter 02 變數、常數和類型
2.1 資料類型
2.2 宣告變數
2.3 Kotlin 的內建資料類型
2.4 唯讀變數
2.5 類型推斷
2.6 編譯時期常數
2.7 查看Kotlin位元組碼
2.8 深入學習:Kotlin 中的Java 基礎資料類型
2.9 挑戰練習:定義hasSteed 變數
2.10 挑戰練習:獨角獸之角
2.11 挑戰練習:魔鏡
Chapter 03 條件運算式
3.1 if/else 語句
3.2 range
3.3 when 運算式
3.4 string 範本
3.5 挑戰練習:range 研究
3.6 挑戰練習:最佳化玩家光環展示
3.7 挑戰練習:可配置的玩家狀況報告格式
Chapter 04 函數
4.1 使用函數重構程式碼
4.2 函數結構剖析
4.3 呼叫函數
4.4 以函數重構程式碼
4.5 自訂函數
4.6 預設引數
4.7 單運算式函數
4.8 Unit 函數
4.9 具名函數引數
4.10 深入學習:Nothing類型
4.11 深入學習:Java 中的檔案層級函數
4.12 深入學習:函數重載
4.13 深入學習:反引號中的函數名稱
4.14 挑戰練習:單運算式函數
4.15 挑戰練習:Fireball 醉酒程度
4.16 挑戰練習:醉酒狀態報告
Chapter 05 匿名函數與函數類型
5.1 匿名函數
5.2 類型推斷
5.3 定義參數是函數的函數
5.4 函數內聯(Function Inlining)
5.5 函數參照
5.6 函數類型作為返回類型
5.7 深入學習:Kotlin 中的lambda 就是閉包
5.8 深入學習:lambda 與匿名內部類別
Chapter 06 null 安全與異常
6.1 可空性(Nullability)
6.2 Kotlin 的null 類型
6.3 編譯時期與執行時期
6.4 null 安全
6.5 異常
6.6 先決條件
6.7 null:真的一無是處嗎
6.8 深入學習:已檢查異常與未檢查異常
6.9 深入學習:該如何保證可空性
Chapter 07 字串
7.1 擷取字串
7.2 字串操作
7.3 字串比較
7.4 深入學習:Unicode
7.5 深入學習:巡訪字元
7.6 挑戰練習:改進toDragonSpeak函數
Chapter 08 數字
8.1 數字類型
8.2 整數
8.3 小數數字
8.4 字串轉成數值類型
8.5 Int 類型轉成Double類型
8.6 格式化Double 類型
8.7 Double 類型轉成Int類型
8.8 深入學習:位元運算
8.9 挑戰練習:還剩多少酒
8.10 挑戰練習:解決負數餘額問題
8.11 挑戰練習:龍幣
Chapter 09 標準函數
9.1 apply
9.2 let
9.3 run
9.4 with
9.5 also
9.6 takeIf
9.7 使用標準程式庫函數
Chapter 10 List 與Set
10.1 List
10.2 迭代
10.3 讀取檔案內容到清單
10.4 解構(Destructuring)
10.5 Set
10.6 while 迴圈
10.7 break 運算式
10.8 集合轉換
10.9 深入學習:陣列類型
10.10 深入學習:唯讀與不可變
10.11 挑戰練習:美化酒水單
10.12 挑戰練習:進一步美化酒水單
Chapter 11 Map
11.1 建立一個Map
11.2 讀取Map 集合的值
11.3 增加Map 集合的元素
11.4 修改Map 集合值
11.5 挑戰練習:守衛小酒館
Chapter 12 定義類別
12.1 定義一個類別
12.2 建構實例
12.3 類別函數
12.4 可見性與封裝
12.5 類別屬性
12.6 重構NyetHack
12.7 使用套件(package)
12.8 深入學習:細看var 與val 屬性
12.9 深入學習:防範競態條件(race condition)
12.10 深入學習:私有套件
Chapter 13 初始化
13.1 建構函數
13.2 初始化區塊
13.3 屬性初始化
13.4 初始化順序
13.5 延遲初始化
13.6 深入學習:初始化陷阱
13.7 挑戰練習:聖劍之謎
Chapter 14 繼承
14.1 定義Room 類別
14.2 建立子類別
14.3 類型檢測
14.4 Kotlin 類別層級
14.5 深入學習:Any
Chapter 15 物件
15.1 object 關鍵字
15.2 巢狀類別
15.3 資料類別
15.4 列舉類別
15.5 運算子重載
15.6 探索NyetHack遊戲世界
15.7 深入學習:定義結構比較
15.8 深入學習:代數資料類型
15.9 挑戰練習:「quit」命令
15.10 挑戰練習:魔力地圖
15.11 挑戰練習:搖鈴
Chapter 16 介面與抽象類別
16.1 定義介面
16.2 實作介面
16.3 預設實作
16.4 抽象類別
16.5 在NyetHack 遊戲裡打怪
Chapter 17 泛型
17.1 定義泛型類別
17.2 泛型函數
17.3 多泛型參數
17.4 泛型約束
17.5 vararg 關鍵字與get 函數
17.6 in 與out
17.7 深入學習:reified 關鍵字
Chapter 18 擴充
18.1 定義擴充函數
18.2 泛型擴充函數
18.3 擴充屬性
18.4 可空類別擴充
18.5 擴充實作揭秘
18.6 利用擴充封裝程式碼
18.7 定義擴充檔
18.8 重新命名擴充
18.9 Kotlin 標準程式庫的擴充
18.10 深入學習:帶接收者的函數文字
18.11 挑戰練習:toDragonSpeak 擴充
18.12 挑戰練習:frame 擴充
Chapter 19 函數式程式設計基礎
19.1 函數類別
19.2 為什麼要學習函數式程式設計
19.3 序列
19.4 深入學習:評估程式碼效能
19.5 深入學習:Arrow.kt
19.6 挑戰練習:Map 值反轉
19.7 挑戰練習:應用函數式程式設計
19.8 挑戰練習:滑動視窗(Sliding Window)演算法
Chapter 20 Kotlin 與Java 互動操作
20.1 與Java 類別互動操作
20.2 互通性與可空性
20.3 類型映射
20.4 getter、setter 方法與互通性
20.5 類別之外
20.6 異常與互動性
20.7 Java 的函數類型
Chapter 21 利用Kotlin 開發首個Android 應用軟體
21.1 Android Studio
21.2 定義UI
21.3 利用模擬器執行應用程式
21.4 產生角色
21.5 Activity 類別
21.6 產生實體視圖
21.7 Kotlin Android 擴充
21.8 設定按一下事件監聽器
21.9 保存實例狀態
21.10 使用擴充重構程式碼
21.11 深入學習:Android KTX 與Anko 程式庫 <
Chapter 01 Kotlin 應用開發初體驗
1.1 安裝IntelliJ IDEA
1.2 第一個Kotlin 專案
1.3 Kotlin REPL
1.4 深入學習:為什麼要用IntelliJ
1.5 深入學習:JVM 導向
1.6 挑戰練習:使用REPL 研究Kotlin 中的算數運算子
Chapter 02 變數、常數和類型
2.1 資料類型
2.2 宣告變數
2.3 Kotlin 的內建資料類型
2.4 唯讀變數
2.5 類型推斷
2.6 編譯時期常數
2.7 查看Kotlin位元組碼
2.8 深入學習:Kotlin 中的Java 基礎資料類型
2.9 挑戰練習:定義hasSteed 變數
2.10 挑戰練習:獨角獸之角
2.11 挑戰練習:魔鏡
Chapter 03 條件運算式
3.1 if/else 語句
3.2 range
3.3 when 運算式
3.4 string 範本
3.5 挑戰練習:range 研究
3.6 挑戰練習:最佳化玩家光環展示
3.7 挑戰練習:可配置的玩家狀況報告格式
Chapter 04 函數
4.1 使用函數重構程式碼
4.2 函數結構剖析
4.3 呼叫函數
4.4 以函數重構程式碼
4.5 自訂函數
4.6 預設引數
4.7 單運算式函數
4.8 Unit 函數
4.9 具名函數引數
4.10 深入學習:Nothing類型
4.11 深入學習:Java 中的檔案層級函數
4.12 深入學習:函數重載
4.13 深入學習:反引號中的函數名稱
4.14 挑戰練習:單運算式函數
4.15 挑戰練習:Fireball 醉酒程度
4.16 挑戰練習:醉酒狀態報告
Chapter 05 匿名函數與函數類型
5.1 匿名函數
5.2 類型推斷
5.3 定義參數是函數的函數
5.4 函數內聯(Function Inlining)
5.5 函數參照
5.6 函數類型作為返回類型
5.7 深入學習:Kotlin 中的lambda 就是閉包
5.8 深入學習:lambda 與匿名內部類別
Chapter 06 null 安全與異常
6.1 可空性(Nullability)
6.2 Kotlin 的null 類型
6.3 編譯時期與執行時期
6.4 null 安全
6.5 異常
6.6 先決條件
6.7 null:真的一無是處嗎
6.8 深入學習:已檢查異常與未檢查異常
6.9 深入學習:該如何保證可空性
Chapter 07 字串
7.1 擷取字串
7.2 字串操作
7.3 字串比較
7.4 深入學習:Unicode
7.5 深入學習:巡訪字元
7.6 挑戰練習:改進toDragonSpeak函數
Chapter 08 數字
8.1 數字類型
8.2 整數
8.3 小數數字
8.4 字串轉成數值類型
8.5 Int 類型轉成Double類型
8.6 格式化Double 類型
8.7 Double 類型轉成Int類型
8.8 深入學習:位元運算
8.9 挑戰練習:還剩多少酒
8.10 挑戰練習:解決負數餘額問題
8.11 挑戰練習:龍幣
Chapter 09 標準函數
9.1 apply
9.2 let
9.3 run
9.4 with
9.5 also
9.6 takeIf
9.7 使用標準程式庫函數
Chapter 10 List 與Set
10.1 List
10.2 迭代
10.3 讀取檔案內容到清單
10.4 解構(Destructuring)
10.5 Set
10.6 while 迴圈
10.7 break 運算式
10.8 集合轉換
10.9 深入學習:陣列類型
10.10 深入學習:唯讀與不可變
10.11 挑戰練習:美化酒水單
10.12 挑戰練習:進一步美化酒水單
Chapter 11 Map
11.1 建立一個Map
11.2 讀取Map 集合的值
11.3 增加Map 集合的元素
11.4 修改Map 集合值
11.5 挑戰練習:守衛小酒館
Chapter 12 定義類別
12.1 定義一個類別
12.2 建構實例
12.3 類別函數
12.4 可見性與封裝
12.5 類別屬性
12.6 重構NyetHack
12.7 使用套件(package)
12.8 深入學習:細看var 與val 屬性
12.9 深入學習:防範競態條件(race condition)
12.10 深入學習:私有套件
Chapter 13 初始化
13.1 建構函數
13.2 初始化區塊
13.3 屬性初始化
13.4 初始化順序
13.5 延遲初始化
13.6 深入學習:初始化陷阱
13.7 挑戰練習:聖劍之謎
Chapter 14 繼承
14.1 定義Room 類別
14.2 建立子類別
14.3 類型檢測
14.4 Kotlin 類別層級
14.5 深入學習:Any
Chapter 15 物件
15.1 object 關鍵字
15.2 巢狀類別
15.3 資料類別
15.4 列舉類別
15.5 運算子重載
15.6 探索NyetHack遊戲世界
15.7 深入學習:定義結構比較
15.8 深入學習:代數資料類型
15.9 挑戰練習:「quit」命令
15.10 挑戰練習:魔力地圖
15.11 挑戰練習:搖鈴
Chapter 16 介面與抽象類別
16.1 定義介面
16.2 實作介面
16.3 預設實作
16.4 抽象類別
16.5 在NyetHack 遊戲裡打怪
Chapter 17 泛型
17.1 定義泛型類別
17.2 泛型函數
17.3 多泛型參數
17.4 泛型約束
17.5 vararg 關鍵字與get 函數
17.6 in 與out
17.7 深入學習:reified 關鍵字
Chapter 18 擴充
18.1 定義擴充函數
18.2 泛型擴充函數
18.3 擴充屬性
18.4 可空類別擴充
18.5 擴充實作揭秘
18.6 利用擴充封裝程式碼
18.7 定義擴充檔
18.8 重新命名擴充
18.9 Kotlin 標準程式庫的擴充
18.10 深入學習:帶接收者的函數文字
18.11 挑戰練習:toDragonSpeak 擴充
18.12 挑戰練習:frame 擴充
Chapter 19 函數式程式設計基礎
19.1 函數類別
19.2 為什麼要學習函數式程式設計
19.3 序列
19.4 深入學習:評估程式碼效能
19.5 深入學習:Arrow.kt
19.6 挑戰練習:Map 值反轉
19.7 挑戰練習:應用函數式程式設計
19.8 挑戰練習:滑動視窗(Sliding Window)演算法
Chapter 20 Kotlin 與Java 互動操作
20.1 與Java 類別互動操作
20.2 互通性與可空性
20.3 類型映射
20.4 getter、setter 方法與互通性
20.5 類別之外
20.6 異常與互動性
20.7 Java 的函數類型
Chapter 21 利用Kotlin 開發首個Android 應用軟體
21.1 Android Studio
21.2 定義UI
21.3 利用模擬器執行應用程式
21.4 產生角色
21.5 Activity 類別
21.6 產生實體視圖
21.7 Kotlin Android 擴充
21.8 設定按一下事件監聽器
21.9 保存實例狀態
21.10 使用擴充重構程式碼
21.11 深入學習:Android KTX 與Anko 程式庫 <