| 作者 |
| 乔希·斯基恩(Josh Skeen) [美] 戴维·格林哈尔希(Davi |
| 丛书名 |
| 图灵程序设计丛书 |
| 出版社 |
| 人民邮电出版社 |
| ISBN |
| 9787115515636 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书由知名技术培训机构Big Nerd Ranch打造,秉承其一贯的简洁、实用的写作风格。Kotlin已成为Android官方支持的开发语言,但它具有平台独立性,亦可用于开发各种类型的原生应用。本书将带领你通过搭建书中的示例项目来循序渐进地掌握Kotlin 的用法。首先使用IntelliJ IDEA搭建沙盒项目,帮助你熟悉开发环境。接下来介绍Kotlin编程知识,从较为基础的变量、常量、类型等讲起,逐渐深入到继承、对象和抽象类。*后是函数式编程、Kotlin与Java互操作、构建Android应用等较复杂的内容。多章配有习题,帮你温故知新,巩固所学知识。 |
| 目录 |
| 第 1章 Kotlin应用开发初体验 1 1.1 安装IntelliJ IDEA 1 1.2 第 一个Kotlin项目 2 1.2.1 创建首个Kotlin文件 5 1.2.2 运行Kotlin文件 7 1.3 Kotlin REPL 8 1.4 深入学习:为什么要用IntelliJ 10 1.5 深入学习:面向JVM 10 1.6 挑战练习:使用REPL研究Kotlin中的算数运算符 11 第 2章 变量、常量和类型 12 2.1 数据类型 12 2.2 声明变量 12 2.3 Kotlin的内置数据类型 14 2.4 只读变量 15 2.5 类型推断 17 2.6 编译时常量 19 2.7 查看Kotlin字节码 19 2.8 深入学习:Kotlin中的Java基本数据类型 21 2.9 挑战练习:定义hasSteed变量 22 2.10 挑战练习:独角兽之角 22 2.11 挑战练习:魔镜 23 第3章 条件语句 24 3.1 if/else语句 24 3.1.1 添加更多条件 27 3.1.2 if/else嵌套语句 28 3.1.3 更优雅的条件语句 29 3.2 range 33 3.3 when表达式 34 3.4 string模板 36 3.5 挑战练习:range 研究 37 3.6 挑战练习:优化玩家光环展示 38 3.7 挑战练习:可配置的玩家状况报告格式 38 第4章 函数 40 4.1 使用函数重构代码 40 4.2 函数结构剖析 42 4.2.1 函数头 42 4.2.2 函数体 44 4.2.3 函数作用域 45 4.3 调用函数 46 4.4 以函数重构代码 46 4.5 自定义函数 48 4.6 默认值参 49 4.7 单表达式函数 50 4.8 Unit函数 51 4.9 具名函数参数 52 4.10 深入学习:Nothing类型 53 4.11 深入学习:Java中的文件级函数 54 4.12 深入学习:函数重载 55 4.13 深入学习:反引号中的函数名 56 4.14 挑战练习:单表达式函数 57 4.15 挑战练习:Fireball醉酒程度 57 4.16 挑战练习:醉酒状态报告 57 第5章 匿名函数与函数类型 58 5.1 匿名函数 58 5.1.1 函数类型 59 5.1.2 隐式返回 60 5.1.3 函数参数 61 5.1.4 it关键字 61 5.1.5 多个参数 62 5.2 类型推断 63 5.3 定义参数是函数的函数 63 5.4 函数内联 65 5.5 函数引用 66 5.6 函数类型作为返回类型 68 5.7 深入学习:Kotlin中的lambda就是闭包 69 5.8 深入学习:lambda与匿名内部类 69 第6章 null安全与异常 71 6.1 可空性 71 6.2 Kotlin的null类型 72 6.3 编译时间与运行时间 73 6.4 null安全 74 6.4.1 选项一:安全调用操作符 75 6.4.2 选项二:使用!!.操作符 76 6.4.3 选项三:使用if判断null值情况 77 6.5 异常 79 6.5.1 抛出异常 80 6.5.2 自定义异常 81 6.5.3 处理异常 82 6.6 先决条件函数 83 6.7 null:真的一无是处吗 85 6.8 深入学习:已检查异常与未检查异常 86 6.9 深入学习:可空性该如何保证 86 第7章 字符串 88 7.1 字符串截取 88 7.1.1 substring 88 7.1.2 split 90 7.2 字符串操作 92 7.3 字符串比较 93 7.4 深入学习:Unicode 95 7.5 深入学习:遍历字符 95 7.6 挑战练习:改进toDragonSpeak函数 96 第8章 数 97 8.1 数字类型 97 8.2 整数 98 8.3 小数数字 99 8.4 字符串转数值类型 100 8.5 Int类型转Double类型 101 8.6 Double类型格式化 102 8.7 Double类型转换为Int类型 103 8.8 深入学习:位运算 104 8.9 挑战练习:还剩多少酒 105 8.10 挑战练习:解决负数余额问题 105 8.11 挑战练习:龙币 105 第9章 标准库函数 106 9.1 apply 106 9.2 let 107 9.3 run 108 9.4 with 109 9.5 also 109 9.6 takeIf 110 9.7 使用标准库函数 110 第 10章 List与Set 112 10.1 List 112 10.1.1 获取列表元素 113 10.1.2 更改列表内容 116 10.2 遍历 119 10.3 将文件数据读取到列表 122 10.4 解构 124 10.5 Set 124 10.5.1 创建一个Set集合 124 10.5.2 向Set集合中添加元素 125 10.6 while循环 128 10.7 break表达式 129 10.8 集合转换 129 10.9 深入学习:数组类型 130 10.10 深入学习:只读与不可变 131 10.11 挑战练习:美化酒水单 132 10.12 挑战练习:进一步美化酒水单 132 第 11章 Map 133 11.1 创建一个Map 133 11.2 读取Map集合的值 135 11.3 向Map集合添加项 136 11.4 修改Map集合值 137 11.5 挑战练习:守卫小客栈 140 第 12章 定义类 141 12.1 定义一个类 141 12.2 构造实例 141 12.3 类函数 142 12.4 可见性与封装 143 12.5 类属性 144 12.5.1 属性getter与setter 146 12.5.2 属性可见性 148 12.5.3 计算属性 149 12.6 重构NyetHack 149 12.7 使用包 156 12.8 深入学习:细看var与val属性 157 12.9 深入学习:防范竞态条件 160 12.10 深入学习:私有包 161 第 13章 初始化 162 13.1 构造函数 162 13.1.1 主构造函数 163 13.1.2 在主构造函数里定义属性 164 13.1.3 次构造函数 164 13.1.4 默认参数 166 13.1.5 命名参数 167 13.2 初始化块 167 13.3 属性初始化 168 13.4 初始化顺序 170 13.5 延迟初始化 172 13.5.1 延迟初始化 172 13.5.2 惰性初始化 173 13.6 深入学习:初始化陷阱 174 13.7 挑战练习:圣剑之谜 176 第 14章 继承 178 14.1 定义Room类 178 14.2 创建子类 179 14.3 类型检测 184 14.4 Kotlin类层次 186 14.4.1 类型转换 187 14.4.2 智能类型转换 188 14.5 深入学习:Any 189 第 15章 对象 190 15.1 object关键字 190 15.1.1 对象声明 190 15.1.2 对象表达式 195 15.1.3 伴生对象 195 15.2 嵌套类 196 15.3 数据类 199 15.3.1 toString 200 15.3.2 equals 200 15.3.3 copy 200 15.3.4 解构声明 201 15.4 枚举类 202 15.5 运算符重载 203 15.6 探索NyetHack游戏世界 205 15.7 深入学习:定义结构比较 208 15.8 深入学习:代数数据类型 210 15.9 挑战练习:“quit”命令 211 15.10 挑战练习:魔力地图 212 15.11 挑战练习:摇铃 212 第 16章 接口与抽象类 213 16.1 定义接口 213 16.2 实现接口 214 16.3 默认实现 216 16.4 抽象类 217 16.5 在NyetHack 游戏里打怪 219 第 17章 泛型 223 17.1 定义泛型类 223 17.2 泛型函数 224 17.3 多泛型参数 225 17.4 泛型约束 227 17.5 vararg关键字与get函数 228 17.6 in与out 230 17.7 深入学习:reified关键字 234 第 18章 扩展 236 18.1 定义扩展函数 236 18.2 泛型扩展函数 237 18.3 扩展属性 239 18.4 可空类扩展 240 18.5 扩展实现揭秘 241 18.6 用扩展封装代码 241 18.7 定义扩展文件 243 18.8 重命名扩展 245 18.9 Kotlin标准库中的扩展 245 18.10 深入学习:带接收者的函数字面量 246 18.11 挑战练习:toDragonSpeak扩展 247 18.12 挑战练习:frame扩展 247 第 19章 函数式编程基础 248 19.1 函数类别 248 19.1.1 变换 248 19.1.2 过滤 250 19.1.3 合并 251 19.2 为什么要学习函数式编程 252 19.3 序列 253 19.4 深入学习:评估代码性能 254 19.5 深入学习:Arrow.kt 255 19.6 挑战练习:Map值反转 255 19.7 挑战练习:应用函数式编程 256 19.8 挑战练习:滑窗算法 257 第 20章 Kotlin与Java互操作 258 20.1 与Java类互操作 258 20.2 互操作性与可空性 259 20.3 类型映射 262 20.4 getter和setter方法与互操作性 263 20.5 类之外 265 20.6 异常与互操作性 272 20.7 Java中的函数类型 275 第 21章 用Kotlin开发首个Android应用 277 21.1 Android Studio 277 21.1.1 Gradle配置 281 21.1.2 项目组织 283 21.2 定义UI 283 21.3 用模拟器运行应用 286 21.4 生成角色 287 21.5 Activity类 288 21.6 实例化视图 289 21.7 Kotlin Android扩展 291 21.8 设置单击事件监听器 293 21.9 保存实例状态 294 21.10 使用扩展重构代码 296 21.11 深入学习:Android KTX与Anko库 298 第 22章 Kotlin协程简介 300 22.1 解析角色数据 300 22.2 获取动态数据 302 22.3 Android主线程 305 22.4 启用协程 305 22.5 使用async指定协程 305 22.6 launch与async/await 307 22.7 挂起函数 307 22.8 挑战练习:动态数据 308 22.9 挑战练习:最小力量值 308 第 23章 编后语 309 23.1 前方的路 309 23.2 插个广告 309 23.3 致谢 309 附录A 补充挑战练习 310 术语表 316 |