包邮KOTLIN从入门到项目实战
1星价
¥39.7
(5.0折)
2星价¥39.7
定价¥79.0
图文详情
- ISBN:9787121371400
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:376
- 出版时间:2018-04-01
- 条形码:9787121371400 ; 978-7-121-37140-0
本书特色
本书是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基础,哪怕只是编程的初学者,都可以通过本书很快地掌握这门语言。
内容简介
本书是Kotlin跨平台编程语言的实战型工具书,全书力求以“简洁的语言+大量实例”风格进行讲解,能够帮助熟悉Java语言或“零基础编程”的读者快速掌握Kotlin。全书共分为5篇,由浅入深,层次递进地进行讲解。篇“准备”,介绍了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
展开全部
作者简介
上汽88共享汽车 财务线研发经理熟悉各类WEB开发、移动互联网陆金所资深Java,易居创研技术Leader,上汽研发Leader从2014年起接触Kotlin语言,有丰富的编程经验
预估到手价 ×
预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。
确定