×
暂无评论
图文详情
  • 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语言,有丰富的编程经验

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航