
包邮Kotlin编程:Big Nerd Ranch入门

- ISBN:9787302673910
- 装帧:平装
- 册数:暂无
- 重量:暂无
- 开本:26cm
- 页数:13,388页
- 出版时间:2024-10-01
- 条形码:9787302673910 ; 978-7-302-67391-0
本书特色
(1)源自大名鼎鼎的Big Nerd Ranch训练营培训讲义,该训练营已经为Google、Facebook、微软等行业巨头培养了众多专业人才。
(2)以循序渐进的方式精心编排章节,从基础的变量与集合开始,逐渐深入到面向对象编程和函数式编程技术,使用Kotlin的官方方法运行异步代码,并涉猎Kotlin的跨平台能力。
(3)通过贯穿全书的示例项目,在实践中掌握Kotlin编程语言。
(4)多章设计的“好奇之处”环节更详细地阐述Kotlin语言的底层机制,便于更深入地理解Kotlin,并进一步扩展知识。
(5)多章设计的“挑战之处”环节,助力巩固所学知识,通过附加的问题提升Kotlin技能。
详细讨论Kotlin代码与Java代码的等效性以及Kotlin与其他语言的相似之处,有助于理解Kotlin与所支持平台之间的关系。
内容简介
通过搭建书中的示例项目,可以循序渐进地掌握Kotlin 的用法。全书以循序渐进的方式精心编排章节,从基础的变量与集合开始,逐渐深入到面向对象编程和函数式编程技术。首先使用IntelliJ IDEA搭建沙盒项目,引领读者熟悉开发环境。接下来介绍Kotlin编程知识,从较为基础的变量、常量、类型等讲起,逐渐深入到继承、对象和抽象类。*后是函数式编程、Kotlin与Java互操作、构建Android应用等较复杂的内容。书中章节通过搭建各种示例项目,在实践中掌握Kotlin编程语言, 每章均有“深入学习”和“挑战练习”环节,帮助巩固所学知识。
前言
2011年,JetBrains公司宣布开发Kotlin编程语言,这是一种在Java虚拟机上运行的替代Java或Scala编写代码的语言。6年后,Google公司宣布Kotlin成为Android操作系统官方支持的开发语言。
var x = "Python"
var y = "Java"
var z = "Kotlin"
(3) Kotlin是一门成熟的语言,其编码规范随着时间的推移仍在不断发展。虽然每位读者都可能会形成自己的编码风格,但书中遵循了JetBrains和Google的Kotlin编码规范。JetBrains的编码规范和Google的风格指南可扫描相关二维码获得链接。
展望未来
在学习过程中慢慢消化书中的示例,一旦掌握了Kotlin的语法,就会发现书中示例的开发过程清晰、务实而流畅。在此之前,请继续努力,学习一门新的语言会带来丰厚的回报。
目录
**部分入门
第1章**个Kotlin应用程序
1.1安装IntelliJ IDEA
1.2**个Kotlin项目
1.2.1创建**个Kotlin文件
1.2.2运行Kotlin文件
1.2.3Kotlin/JVM代码的编译和执行
1.3Kotlin REPL
1.4好奇之处: 为什么使用IntelliJ
1.5好奇之处: 面向JVM
1.6挑战之处: REPL算术运算
第2章变量、常量和类型
2.1类型
2.2声明变量
2.3Kotlin的内置类型
2.4只读变量
2.5类型推断
2.6编译时常量
2.7检查Kotlin字节码
2.8好奇之处: Kotlin中的Java基本类型
2.9挑战之处: hasSteed
2.10挑战之处: The Unicorns Horn酒吧
2.11挑战之处: 魔镜
第二部分基本语法
第3章条件判断
3.1if/else语句
3.2区间
3.3when表达式
3.4挑战之处: 灵活使用区间
第4章函数
4.1将代码提炼为函数
4.2函数剖析
4.3函数调用
4.4自定义函数
4.5默认实际参数
4.6单表达式函数
4.7Unit函数
4.8命名函数的实际参数
4.9好奇之处: Nothing类型
4.10好奇之处: Java中的文件级函数
4.11好奇之处: 函数重载
4.12好奇之处: 反引号中的函数名
第5章数值
5.1数值类型
5.2整数
5.3浮点数
5.4格式化双精度数值
5.5在数值类型之间进行转换
5.6好奇之处: 无符号数
5.7好奇之处: 位运算
第6章字符串
6.1字符串插值
6.2原始字符串
6.3从控制台读取输入
6.4将字符串转换为数值
6.5正则表达式
6.6字符串操作
6.7字符串比较
6.8好奇之处: Unicode
第7章空安全和异常处理
7.1Nullability
7.2Kotlin的显式Null类型
7.3编译时和运行时
7.4空安全
7.4.1选项1: 使用if语句检查null值
7.4.2选项2: 安全调用运算符
7.4.3选项3: nonnull断言运算符
7.5异常
7.5.1抛出异常
7.5.2异常处理
7.5.3try/catch表达式
7.6前置条件
7.7好奇之处: 自定义异常
7.8好奇之处: 已检查的异常和未检查的异常
第三部分函数式编程和Collection
第8章Lambda表达式和函数类型
8.1NyetHack简介
8.2匿名函数
8.3Lambda表达式
8.3.1函数类型
8.3.2隐式返回值
8.3.3函数的实际参数
8.3.4it标识符
8.3.5接收多个实际参数
8.4类型推断支持
8.5更有效的Lambda
8.6定义一个以函数为参数的函数
8.7函数内联
8.8Lambda和Kotlin标准库
8.9有趣之处: 函数引用
8.10好奇之处: 捕获Lambda
8.11挑战之处: 新头衔和新情绪
第9章List和Set
9.1List
9.1.1访问List中的元素
9.1.2更改List中的内容
9.2重复迭代
9.3将文件读入List中
9.4解构化
9.5Set
9.5.1创建一个Set
9.5.2向Set中添加元素
9.6while循环
9.7Collection之间的转换
9.8有趣之处: Array类型
9.9好奇之处: 只读的与不可变的
9.10好奇之处: break表达式
9.11好奇之处: Return标签
9.12挑战之处: 格式化的酒馆菜单
9.13挑战之处: 更高级的格式化酒馆菜单
第10章Map
10.1创建一个Map
10.2访问Map的值
10.3向Map中添加条目
10.4修改Map的值
10.5在List与Map之间进行转换
10.6在Map中迭代
10.7挑战之处: 复杂的订单
第11章函数式编程基础
11.1转换数据
11.1.1map()函数
11.1.2associate()函数
11.1.3使用函数式编程进行解构
11.1.4flatMap()函数
11.1.5map()函数 vs flatMap()函数
11.2过滤数据
11.3组合函数
11.4为什么选择函数式编程
11.5Sequence
11.6好奇之处: 性能分析
11.7好奇之处: 聚合数据
11.7.1reduce()函数
11.7.2fold()函数
11.7.3SumBy()函数
11.8好奇之处: 关键字vararg
11.9好奇之处: Arrow.kt
11.10挑战之处: 翻转Map中的值
11.11挑战之处: 找出*喜爱的商品
第12章作用域函数
12.1apply()函数
12.2let()函数
12.3run()函数
12.4with()函数
12.5also()函数
12.6takeIf()函数
12.7使用作用域函数
第四部分面向对象编程
第13章类
13.1定义类
13.2构建实例
13.3类函数
13.4可见性和封装
13.5类属性
13.6使用软件包
13.7好奇之处: 详细解析var和val属性
13.8好奇之处: 防止可变性
13.9好奇之处: Package Private
第14章初始化
14.1构造函数
14.1.1主构造函数
14.1.2在主构造函数中定义属性
14.1.3次构造函数
14.1.4默认实际参数
14.1.5命名实际参数
14.2初始化程序块
14.3初始化顺序
14.4延迟初始化
14.4.1后期初始化
14.4.2惰性初始化
14.5好奇之处: 初始化陷阱
14.6好奇之处: 属性代理
14.7挑战之处: 圣剑Excalibur之谜
第15章继承
15.1定义room类
15.2创建一个子类
15.3类型检查
15.4Kotlin的类型层次结构
15.4.1类型强制转换
15.4.2智能强制转换
15.5重构酒馆
15.6好奇之处: Any类
15.7好奇之处: 安全的强制转换运算符
第16章对象、数据类和枚举类
16.1对象关键字
16.1.1对象声明
16.1.2对象表达式
16.1.3伴生对象
16.2嵌套类
16.3数据类
16.3.1toString()函数
16.3.2equals()函数和hashCode()函数
16.3.3Copy()函数
16.3.4解构声明
16.4枚举类
16.5运算符重载
16.6探索NyetHack的世界
16.7好奇之处: 定义结构比较
16.8好奇之处: 代数数据类型
16.9好奇之处: 值类
16.10挑战之处: 更多的命令
16.11挑战之处: 实现一个游戏世界地图
16.12挑战之处: 敲响钟声
第17章接口和抽象类
17.1定义接口
17.2实现接口
17.3默认实现
17.4抽象类
17.5在NyetHack中进行战斗
17.6挑战之处: 更多的怪物
第五部分高级Kotlin
第18章泛型
18.1定义泛型类型
18.2泛型函数
18.3泛型约束
18.4in和out
18.5添加Loot至NyetHack
18.6好奇之处: 关键字reified
第19章扩展
19.1定义扩展函数
19.1.1在超类上定义一个扩展函数
19.1.2通用扩展函数
19.1.3运算符扩展函数
19.2扩展属性
19.3对Nullable类型的扩展
19.4扩展的实现原理
19.5扩展的可见性
19.6Kotlin标准库中的扩展
19.7好奇之处: 带有接收器的函数字面量
19.8挑战之处: 框架扩展
第20章协程
20.1阻塞调用
20.2启用协程
20.3协程构建器
20.4协程作用域
20.5结构化并发
20.6使用HTTP客户端
20.7async和await
20.8好奇之处: 竞态条件
20.9好奇之处: 服务器端Kotlin
20.10挑战之处: 不允许取消
第21章流
21.1设置流
21.2MutableStateFlow
21.3流终止
21.4流转换
21.5流中的错误处理
21.6好奇之处: SharedFlow
第22章通道
22.1使用通道对工作进行拆分
22.2发送至通道
22.3从通道中接收
22.4关闭通道
22.5加入jobs
22.6好奇之处: 其他的通道行为
22.6.1会合通道
22.6.2缓冲通道
22.6.3无限制通道
22.6.4合并通道
第六部分互操作和跨平台应用
第23章Java互操作性
23.1与Java类进行交互
23.2互操作性和Nullity
23.3类型映射
23.4Getter、Setter和互操作性
23.5超越类
23.6异常和互操作性
23.7Java中的函数类型
第24章Kotlin跨平台简介
24.1什么是Kotlin跨平台
24.2规划跨平台项目
24.3**个跨平台项目
24.4定义Kotlin/JVM平台
24.5定义共享代码
24.6expect和actual
第25章Kotlin/Native
25.1声明一个macOS平台
25.2使用Kotlin编写本机代码
25.3启动一个Kotlin/Native应用程序
25.4Kotlin/Native输出
25.5好奇之处: Kotlin移动跨平台
25.6好奇之处: 其他本机平台
第26章Kotlin/JS
26.1宣布对Kotlin/JS的支持
26.2与DOM进行交互
26.3关键字external
26.4执行原始的JavaScript
26.5Dynamic类型
26.6好奇之处: 前端框架
26.7挑战之处: 货币兑换费
第27章后记
27.1展望
27.2宣传
27.3致谢
作者简介
安德鲁·贝利(Andrew Bailey)毕业于佐治亚理工学院,是Big Nerd Ranch的Android工程师和讲师。
戴维·格林哈尔希(David Greenhalgh)毕业于佐治亚理工学院,FanDuel的高级工程经理,Big Nerd Ranch的前Android团队经理和讲师。
乔希·斯基恩(Josh Skeen)是Square的高级软件工程师,Big Nerd Ranch前讲师。
高慧敏,嘉兴大学教授。浙江省嘉兴光伏技术创新服务平台主任,《系统仿真学报》编委会委员,长三角G60科创走廊专家咨询委员会专家。主要从事复杂系统建模与仿真、生产优化与调度等领域的科研工作。
-
造神:人工智能神话的起源和破除 (精装)
¥49.4¥88.0 -
人人都能学AI
¥48.6¥68.0 -
过程控制技术(第2版高职高专规划教材)
¥33.3¥38.0 -
系统性创新手册(管理版)
¥42.6¥119.0 -
人工智能
¥20.3¥55.0 -
WPS OFFICE完全自学教程(第2版)
¥97.3¥139.0 -
智能视频目标检测与识别技术
¥43.5¥59.0 -
人工智能基础及应用
¥33.6¥48.0 -
深入浅出软件架构
¥117.2¥186.0 -
中国通用人工智能发展报告(2024):生成式人工智能的发展与创新(仅供馆配)
¥89.7¥138.0 -
软件设计的哲学(第2版)
¥51.3¥69.8 -
大数据技术导论(第2版)
¥28.9¥41.0 -
人工智能的底层逻辑
¥55.5¥79.0 -
剪映+PREMIERE+AIGC 短视频制作速成
¥73.5¥98.0 -
剪映AI
¥56.4¥88.0 -
数据采集与处理
¥36.4¥49.8 -
PLC结构化文本编程(第2版)
¥57.9¥79.0 -
中小型网络组建与管理
¥30.7¥43.0 -
上海市老年教育推荐用书:老年人智慧生活(进阶篇)
¥32.5¥45.0 -
上海市老年教育推荐用书:老年人智慧生活(初级篇)
¥29.3¥45.0