技术教育社区
www.teccses.org

KOTLIN从入门到项目实战

封面

作者:徐鸿福

页数:376

出版社:电子工业出版社

出版日期:2018

ISBN:9787121371400

电子书格式:pdf/epub/txt

内容简介

本书是Kotlin跨平台编程语言的实战型工具书,全书力求以“简洁的语言+大量实例”风格进行讲解,能够帮助熟悉Java语言或“零基础编程”的读者快速掌握Kotlin。全书共分为5篇,由浅入深,层次递进地进行讲解。篇“准备”,介绍了Kotlin语言的基本特性和使用场景;第2篇“入门”,介绍了Kotlin语言中的变量和常量、数据类型、操作符、流程控制、数组类型、集合类型;第3篇“进阶”,介绍了映射类型、类与对象、类的进阶用法、继承、抽象类与接口、包管理与访问控制符、正则表达式、泛型;第4篇“高阶”,介绍了扩展与委托、函数的不错应用、注解与反射、异常、I/O操作、DSL、异步编程、与Java之间的调用;第5篇“项目实战”,主要介绍了使用Kotlin语言来编写一个图书管理系统的后端应用、Android应用、前端应用。本书适合所有对Kotlin语言感兴趣的读者。无论读者之前是否有过Kotlin经验或Java基础,哪怕只是编程的初学者,都可以通过本书很快地掌握这门语言。

作者简介

上汽88共享汽车 财务线研发经理熟悉各类WEB开发、移动互联网陆金所资深Java,易居创研技术Leader,上汽研发Leader从2014年起接触Kotlin语言,有丰富的编程经验

本书特色

本书是Kotlin跨平台编程语言的实战型工具书,全书力求以“简洁的语言 大量实例”风格进行讲解,能够帮助熟悉Java语言或“零基础编程”的读者快速掌握Kotlin。

全书共分为5篇,由浅入深,层次递进地进行讲解。
–第1篇“准备”,介绍了Kotlin语言的基本特性和使用场景;
–第2篇“入门”,介绍了Kotlin语言中的变量和常量、数据类型、操作符、流程控制、数组类型、集合类型;
–第3篇“进阶”,介绍了映射类型、类与对象、类的进阶用法、继承、抽象类与接口、包管理与访问控制符、正则表达式、泛型;
–第4篇“高阶”,介绍了扩展与委托、函数的高级应用、注解与反射、异常、I/O操作、DSL、异步编程、与Java之间的调用;
–第5篇“项目实战”,主要介绍了使用Kotlin语言来编写一个图书管理系统的后端应用、Android应用、前端应用。本书是Kotlin跨平台编程语言的实战型工具书,全书力求以“简洁的语言 大量实例”风格进行讲解,能够帮助熟悉Java语言或“零基础编程”的读者快速掌握Kotlin。

全书共分为5篇,由浅入深,层次递进地进行讲解。
–第1篇“准备”,介绍了Kotlin语言的基本特性和使用场景;
–第2篇“入门”,介绍了Kotlin语言中的变量和常量、数据类型、操作符、流程控制、数组类型、集合类型;
–第3篇“进阶”,介绍了映射类型、类与对象、类的进阶用法、继承、抽象类与接口、包管理与访问控制符、正则表达式、泛型;
–第4篇“高阶”,介绍了扩展与委托、函数的高级应用、注解与反射、异常、I/O操作、DSL、异步编程、与Java之间的调用;
–第5篇“项目实战”,主要介绍了使用Kotlin语言来编写一个图书管理系统的后端应用、Android应用、前端应用。

本书适合所有对Kotlin语言感兴趣的读者。无论读者之前是否有过Kotlin经验或Java基础,哪怕只是编程的初学者,都可以通过本书很快地掌握这门语言。

目录

目录
=

第1篇 准备
=
第1章 了解Kotlin 2
1.1 Kotlin能干什么 2
1.2 Kotlin的优势 3
1.3 如何使用本书 3

第2章 体验Kotlin 4
2.1 搭建开发环境 4
∣2.1.1 搭建Java的开发环境 4
∣2.1.2 搭建Kotlin的开发环境 6
2.2 使用RPHL 6
∣2.2.1 认识RPHL——快速验证代码的利器 6
∣2.2.2 实例1:在RPHL中进行四则运算 6
2.3 Kotlin的IDE支持 7
∣2.3.1 使用IDEA/Android Studio 7
∣2.3.2 使用Eclipse 7
2.4 Kotlin 的构建工具 8
∣2.4.1 使用Maven 8
∣2.4.2 使用Gradle 10
2.5 基本概念 10
∣2.5.1 源文件与字节码文件 10
∣2.5.2 标识符与关键字 11
∣2.5.3 语句和代码块 11
∣2.5.4 注释 11
∣2.5.5 main()函数 13
2.6 本章小结 14
=
第2篇 入门
=
第3章 第一次动手 16
3.1 实例2:第一个Kotlin脚本——四则运算 16
∣3.1.1 了解Kotlin脚本 16
∣3.1.2 编写Kotlin脚本 16
∣3.1.3 运行脚本 16
3.2 实例3:第一个Kotlin应用——Hello Kotlin 17
∣3.2.1 了解Kotlin应用 17
∣3.2.2 编写代码 17
∣3.2.3 编译代码 17
∣3.2.4 运行代码 18
3.3 本章小结 18

第4章 变量和常量 19
4.1 变量 19
∣4.1.1 了解变量 19
∣4.1.2 创建变量 19
4.2 常量(值) 20
∣4.2.1 了解常量(值) 21
∣4.2.2 创建常量(值) 21
4.3 实例4:对比变量和常量 21
4.4 本章小结 22
=
第5章 数据类型 23
5.1 了解数据类型分类 23
5.2 “数值”类型——表示数字 23
∣5.2.1 数值类型的基本分类 23
∣5.2.2 整型、长整型与短整型 24
∣5.2.3 单精度与双精度浮点类型 26
∣5.2.4 实例5:用“数值”类型进行转账操作 27
5.3 “字符”与“字符串”类型——表示文本 27
∣5.3.1 字符类型 28
∣5.3.2 字符串类型——一组字符的集合 28
∣5.3.3 字符串类型的常用方法 29
∣5.3.4 了解字符串模板——在字符串中使用表达式 31
∣5.3.5 实例6:用字符串模板编写SQL语句 32
∣5.3.6 了解多行文字——原样输出多行语句 33
∣5.3.7 实例7:用多行字符串排版文字 34
5.4 “字节”类型——表示二进制 35
5.5 “布尔”类型——真或假 35
5.6 Kotlin的可空类型 35
∣5.6.1 空值——没有存储空间 35
∣5.6.2 可空类型——可能是空值,也可能不是 36
∣5.6.3 非空类型——不能为空值 37
∣5.6.4 实例8:用安全操作符避免空指针 37
5.7 Kotlin的内置类型结构 39
∣5.7.1 Any类型——所有类的父类 39
∣5.7.2 Unit类型——什么都不返回 39
∣5.7.3 Nothing类型——什么都没有 39
5.8 类型转换与类型判断 40
∣5.8.1 数值类型转换 40
∣5.8.2 自动类型转换 40
∣5.8.3 强制类型转换 41
∣5.8.4 类型提升 41
∣5.8.5 安全类型转换 41
∣5.8.6 类型判断与智能转换 42
5.9 类型别名 42
5.10 本章小结 43
=
第6章 操作符 44
6.1 认识操作符 44
6.2 一元操作符 44
∣6.2.1 正负操作符 44
∣6.2.2 自增操作符与自减操作符 45
∣6.2.3 否定操作符 45
6.3 二元操作符 46
∣6.3.1 四则运算操作符 46
∣6.3.2 复合操作符 46
∣6.3.3 比较操作符 47
∣6.3.4 位运算方法 48
∣6.3.5 猫王操作符 49
∣6.3.6 相等性 49
∣6.3.7 in和!in操作符 50
∣6.3.8 索引操作符 51
∣6.3.9 区间操作符 51
6.4 操作符重写 51
6.5 本章小结 52
=
第7章 流程控制 53
7.1 条件语句 53
∣7.1.1 if语句 53
∣7.1.2 if表达式 55
∣7.1.3 when语句 56
∣7.1.4 when表达式 57
∣7.1.5 实例9:when语句的多种用法 57
7.2 循环语句 59
∣7.2.1 while循环 60
∣7.2.2 for循环 61
∣7.2.3 实例10:用for循环替代while循环 62
∣7.2.4 repeat语句 62
7.3 跳转语句 63
∣7.3.1 continue语句——跳过当前循环 63
∣7.3.2 break语句——停止循环 64
∣7.3.3 实例11:用continue语句和break语句替换标签 65
7.4 本章小结 65
=
第8章 数组类型 67
8.1 数组 67
∣8.1.1 了解数组——一组相同类型的数据 67
∣8.1.2 创建数组 67
∣8.1.3 实例12:数组的常用操作 70
8.2 多维数组 72
∣8.2.1 了解多维数组——数组的元素也是数组 72
∣8.2.2 实例13:用多维数组输出图形 73
8.3 本章小结 74
=
第9章 集合类型 75
9.1 列表(List)类型 75
∣9.1.1 列表——有序的一组数据 75
∣9.1.2 不可变列表 75
∣9.1.3 可变列表 77
∣9.1.4 空列表 78
∣9.1.5 实例14:列表类型的常用方法 79
9.2 集(Set)类型 82
∣9.2.1 集——不重复的一组数据 82
∣9.2.2 不可变集 82
∣9.2.3 可变集 82
∣9.2.4 空集 84
∣9.2.5 实例15:集类型的常用方法 84
9.3 区间(Range)类型 85
∣9.3.1 了解区间——连续的一组数据 85
∣9.3.2 实例16:区间类型的常用方法 87
9.4 序列(Sequence)类型 88
∣9.4.1 了解序列——一组数据 88
∣9.4.2 实例17:序列类型的常用方法 88
9.5 本章小结 89
=
第3篇 进阶
=
第10章 映射类型 94
10.1 了解映射——通过名字找到值 94
10.2 创建不可变映射 94
10.3 创建可变映射 95
10.4 创建空映射 97
10.5 实例18:映射的常用方法 97
∣10.5.1 获得映射的长度 97
∣10.5.2 通过键访问值 97
∣10.5.3 修改可变映射 99
∣10.5.4 删除可变映射中的元素 100
∣10.5.5 遍历映射 100
10.6 本章小结 101
=
第11章 类与对象 102
11.1 函数的概念与使用 102
∣11.1.1 了解函数——重用一组语句 102
∣11.1.2 认识函数的基本结构 102
11.2 函数的返回值 103
∣11.2.1 在函数中返回值 103
∣11.2.2 了解返回值的数据类型 104
∣11.2.3 实例19:在函数中同时返回多个值 104
11.3 函数的参数 105
∣11.3.1 了解函数的参数 105
∣11.3.2 命名参数 106
∣11.3.3 变参——在无法确定参数个数时使用 107
∣11.3.4 参数的默认值 109
∣11.3.5 单表达式函数 109
11.4 类的概念与使用 110
∣11.4.1 了解类——同一种概念的抽象 110
∣11.4.2 类的基本结构 110
∣11.4.3 实例20:定义一个电脑类 111
11.5 对象 112
∣11.5.1 了解对象——类的具体实现 112
∣11.5.2 创建对象 113
∣11.5.3 访问对象的属性和方法 113
11.6 构造方法 114
∣11.6.1 了解构造方法——如何创建对象 114
∣11.6.2 主构造方法与初始化代码 114
∣11.6.3 副构造方法 116
11.7 属性 118
∣11.7.1 了解属性和字段 118
∣11.7.2 使用默认的Getter和Setter访问器 119
∣11.7.3 自定义Getter和 Setter访问器 119
∣11.7.4 幕后字段 121
∣11.7.5 延迟初始化属性 121
∣11.7.6 内联属性 123
11.8 方法 123
∣11.8.1 infix方法 123
∣11.8.2 componentN方法 124
11.9 this关键字 125
11.10 实例21:创建用户登录管理系统 126
∣11.10.1 创建用户类 126
∣11.10.2 创建用户管理类 128
∣11.10.3 创建客户端 131
11.11 本章小结 132
=
第12章 类的进阶用法 133
12.1 嵌套类——在类中定义类 133
12.2 内部类——将类作为另一个类的成员 134
12.3 对象声明——单例对象 134
12.4 伴生对象——代替静态成员 135
∣12.4.1 了解伴生对象——类中的单例对象 135
∣12.4.2 伴生对象的应用 136
12.5 对象表达式——匿名类 137
∣12.5.1 创建对象表达式 137
∣12.5.2 匿名对象的类型限制 138
12.6 数据类——贫血模型 140
∣12.6.1 创建数据类 140
∣12.6.2 了解内置方法的限制规则 142
∣12.6.3 了解对象间的复制 144
12.7 枚举类——常量集 145
∣12.7.1 创建枚举类 146
∣12.7.2 实例22:用枚举类处理日期 147
12.8 密封类 150
12.9 本章小结 150
=
第13章 继承、抽象类与接口 152
13.1 继承 152
∣13.1.1 了解继承——为现有类增加功能 152
∣13.1.2 什么样的类才能被继承 152
∣13.1.3 使用继承 153
∣13.1.4 重写方法 153
∣13.1.5 重写属性 154
∣13.1.6 子类访问父类成员——super关键字 155
13.2 抽象类 156
∣13.2.1 了解抽象类——定义模板 156
∣13.2.2 使用抽象类 156
13.3 接口 157
∣13.3.1 了解接口 157
∣13.3.2 使用接口 158
13.4 is-a关系 159
13.5 重写规则 160
13.6 实例23:用继承绘制一个手机屏幕 161
13.7 本章小结 165
=
第14章 包管理与访问控制符 166
14.1 包——一组相关代码的集合 166
∣14.1.1 声明包 166
∣14.1.2 导入包 167
∣14.4.3 默认导入包 168
14.2 访问控制符——控制成员是否可以被访问 168
∣14.2.1 访问控制符的分类 168
∣14.2.2 构造方法上的访问控制符 169
∣14.2.3 类成员上的访问控制符 169
14.3 其他控制符 170
∣14.3.1 open控制符和final控制符 171
∣14.3.2 override控制符 171
14.4 本章小结 171
=
第15章 正则表达式 172
15.1 正则表达式的作用 172
15.2 使用正则表达式 172
∣15.2.1 创建正则表达式对象 172
∣15.2.2 匹配数据 173
∣15.2.3 提取数据 173
∣15.2.4 替换数据 174
∣15.2.5 正则分组 174
15.3 实例24:用正则表达式解析网页 175
15.4 本章小结 177
=
第16章 泛型 178
16.1 了解泛型 178
∣16.1.1 泛型的概念 178
∣16.1.2 为什么要有泛型 178
16.2 泛型的使用 179
∣16.2.1 泛型函数 179
∣16.2.2 泛型类 180
16.3 类型参数约束 181
∣16.3.1 上界的概念 181
∣16.3.2 指定单个上界 181
∣16.3.3 指定多个上界 182
∣16.3.4 隐式上界 182
16.4 类型型变 183
∣16.4.1 型变 183
∣16.4.2 在声明处协变 184
∣16.4.3 在声明处逆变 185
∣16.4.4 类型参数边界——在使用处型变 186
∣16.4.5 星号投影 186
16.5 类型擦除 187
∣16.5.1 类型擦除的概念 187
∣16.5.2 内联函数和类型擦除 188
16.6 实例25:用泛型实现数据的持久化 188
16.7 本章小结 191
=
第4篇 高阶
=
第17章 扩展与委托 194
17.1 扩展——为现有类增加功能 194
∣17.1.1 扩展方法 194
∣17.1.2 扩展属性 195
∣17.1.3 扩展伴生对象 196
∣17.1.4 扩展可空类型 196
∣17.1.5 静态绑定 197
17.2 委托——继承的替代方案 198
∣17.2.1 使用方法委托 198
∣17.2.2 使用属性委托 200
∣17.2.3 使用内置的属性委托 201
∣17.2.4 委托工厂类 205
17.3 本章小结 207
=
第18章 函数的高级应用 208
18.1 高阶函数 208
∣18.1.1 函数类型 208
∣18.1.2 将函数作为参数 210
∣18.1.3 将函数作为返回值 210
18.2 匿名函数与函数表达式 212
18.3 Lambda表达式 212
∣18.3.1 使用Lambda表达式 213
∣18.3.2 隐式参数 it 214
∣18.3.3 作为参数的Lambda表达式 214
∣18.3.4 在Lambda表达式中返回数据 215
18.4 内联函数 216
∣18.4.1 创建内联函数 217
∣18.4.2 取消参数内联 218
∣18.4.3 本地返回与非本地返回 218
18.5 尾递归函数 219
18.6 函数式编程 220
∣18.6.1 map()方法 220
∣18.6.2 flatMap()方法 221
∣18.6.3 zip()方法 221
∣18.6.4 reduce()方法 222
∣18.6.5 fold()方法 223
∣18.6.6 filter()方法 223
∣18.6.7 forEach()方法 224
∣18.6.8 partition()方法 224
18.7 实例26:用函数式方法完成数据分析 225
18.8 本章小结 226
=
第19章 注解与反射 227
19.1 注解——为代码添加标记 227
∣19.1.1 使用注解 227
∣19.1.2 了解注解参数 228
∣19.1.3 注解目标 231
∣19.1.4 了解元注解 232
19.2 反射——在程序运行时获得代码元数据 234
∣19.2.1 添加依赖 234
∣19.2.2 使用反射 234
19.3 实例27:通过反射和注解完成对象的序列化 240
19.4 本章小结 246
=
第20章 异常 247
20.1 了解异常 247
20.2 异常的处理 247
∣20.2.1 捕获和处理异常 247
∣20.2.2 了解finally代码块和返回值 249
∣20.2.3 处理try表达式中的异常 250
∣20.2.4 抛出异常 251
20.3 异常对象 253
∣20.3.1 了解异常对象 253
∣20.3.2 自定义异常类 253
∣20.4 实例28:处理回调中的异常 254
20.5 本章小结 257
=
第21章 I/O操作 258
21.1 文件操作 258
∣21.1.1 创建一个文件 258
∣21.1.2 删除一个文件 259
∣21.1.3 创建一个目录 259
∣21.1.4 删除一个目录 259
21.2 流操作 259
∣21.2.1 流的分类 259
∣21.2.2 写文件 260
∣21.2.3 读取文件 261
21.3 实例29:读取并解析CSV文件 262
21.4 本章小结 265
=
第22章 DSL 266
22.1 DSL的基础知识 266
∣22.1.1 了解领域特定语言 266
∣22.1.2 了解DSL的常见使用场景 266
∣22.1.3 了解DSL的分类 267
22.2 使用DSL 267
∣22.2.1 实例30:用Lambda表达式实现DSL 267
∣22.2.2 实例31:用链式调用实现DSL 269
22.3 内置DSL 270
22.4 本章小结 271
=
第23章 异步编程 272
23.1 线程与进程 272
23.2 线程的使用 272
23.3 了解协程 274
23.4 协程的使用 274
∣23.4.1 配置依赖 274
∣23.4.2 协程构建器——创建协程 275
∣23.4.3 Job类——控制协程 277
∣23.4.4 协程状态和协程取消 278
23.5 挂起函数 284
23.6 async函数与await()方法 285
∣23.6.1 async()函数 285
∣23.6.2 await()方法 287
23.7 协程上下文与协程调度器 287
∣23.7.1 上下文与调度器 287
∣23.7.2 使用协程调度器 289
23.8 协程作用域 290
∣23.8.1 协程的父子关系 290
∣23.8.2 协程中的异常 291
23.9 调试协程 292
23.10 本章小结 293
=
第24章 与Java之间的调用 295
24.1 用Kotlin调用Java程序 295
∣24.1.1 标识符 295
∣24.1.2 类型映射 296
∣24.1.3 可空类型与平台类型 298
∣24.1.4 Setter与Getter方法 299
∣24.1.5 Object类 300
∣24.1.6 静态成员 301
∣24.1.7 SAM类型 302
∣24.1.8 泛型 303
∣24.1.9 检查异常 303
∣24.1.10 JNI 304
24.2 用Java调用Kotlin程序 304
∣24.2.1 属性 304
∣24.2.2 可空类型 305
∣24.2.3 实例字段 305
∣24.2.4 类字段 306
∣24.2.5 静态方法 307
∣24.2.6 访问控制符 308
∣24.2.7 KClass 308
∣24.2.8 方法重载 308
∣24.2.9 顶层成员 309
∣24.2.10 @JvmName注解 310
∣24.2.11 型变 312
∣24.2.12 检查异常 312
24.3 本章小结 313
=
第5篇 项目实战
=
第25章 用Kotlin编写“图书管理系统”的后端应用 316
25.1 建立Spring Boot工程 316
25.2 实现Persistence层 319
25.3 实现Resource层 326
25.4 实现Service层 330
25.5 允许跨域访问 333
25.6 运行代码 333

第26章 用Kotlin编写“图书管理系统”的Android应用 335
26.1 建立Android工程 335
26.2 配置工程 338
26.3 编写Layout文件 341
26.4 编写业务模型 344
26.5 创建Sevice 345
26.6 创建UI 346
26.7 运行工程 350

第27章 用Kotlin编写“图书管理系统”的前端应用 351
27.1 建立前端工程 351
27.2 解析工程 352
27.3 调用JavaScript的基础知识 354
27.4 React的基础知识 355

下载地址

立即下载

(解压密码:www.teccses.org)

Article Title:《KOTLIN从入门到项目实战》
Article link:https://www.teccses.org/1058957.html