×
Kotlin移动和服务器端应用开发/移动开发技术丛书

Kotlin移动和服务器端应用开发/移动开发技术丛书

1星价 ¥67.9 (6.8折)
2星价¥67.9 定价¥99.8
暂无评论
图文详情
  • ISBN:9787302614050
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:357
  • 出版时间:2022-10-01
  • 条形码:9787302614050 ; 978-7-302-61405-0

本书特色

学习使用 Kotlin 创建有用、安全且令人兴奋的应用 《Kotlin移动和服务器端应用开发》为学习快速发展的编程语言Kotlin提供了易于理解的综合资源。本书将带领读者快速上手Kotlin,不讲无关紧要的内容,且提供的示例可用于真实应用中。 本书由著名技术专家Brett McLaughlin撰写,引导读者掌握这个替代Java的流行编程语言的基本和高级主题。虽然本书深入介绍了移动编程,但Kotlin语言不仅可用于移动应用开发,还可用于服务器端应用开发。 本书介绍了开始**个Kotlin项目所需的知识,详述了Kotlin如何安全地保护和存储信息,引导读者了解该语言的局限性以及何时不适合使用Kotlin。*后, 还提供了一些实用且适用的代码示例,读者可以使用这些示例即时改进自己的Kotlin应用。 本书适合已在使用Java或Ruby开发应用的读者,也适合那些试图使用Kotlin但难以内化其独特功能的读者。如果你一直在“用Kotlin写Java代码”,或希望开始利用Kotlin提供的一切,那么本书就是为你而写。

内容简介

《Kotlin移动和服务器端应用开发》为学习快速发展的编程语言Kotlin提供了易于理解的综合资源。本书将带领读者快速上手Kotin,不讲无关紧要的内容,且提供的示例可用于真实应用中。 本书由有名技术专家Brett McLaughlin撰写,引导读者掌握这个替代Java的流行编程语言的基本和高级主题。虽然本书深入介绍了移动编程,但Kotlin语言不仅可用于移动应用开发,还可用于服务器端应用开发。 本书介绍了开始**个Kotlin项目所需的知识,详述了Kotlin如何安全地保护和存储信息,引导读者了解该语言的局限性以及何时不适合使用Kotlin。*后,还提供了一些实用且适用的代码示例,读者可以使用这些示例即时改进自己的Kotlin应用。 本书适合已在使用Java或Ruby开发应用的读者,也适合那些试图使用Kotlin但难以内化其独特功能的读者。如果你一直在“用Kotin写Java代码”,或希望开始利用Kotlin提供的一切,那么本书就是为你而写。 主要内容: 如何编写自己的**个Kotlin应用; 如何将Kotin用作服务器端的解决方案,而不仅仅是编写移动应用的语言; Kotin如何安全地保护用户信息以及如何编写安全的应用; 为什么Kotin是Java的优秀替代品,为什么它是世界上发展*快的编程语言之一。

目录

第1章 对象的世界 1

1.1 Kotlin:一门新兴的编程语言 1

1.2 什么是Kotlin 2

1.3 Kotlin是面向对象的语言 3

1.4 设置Kotlin环境 4

1.4.1 安装Kotlin(及IDE) 4

1.4.2 安装Kotlin(并使用命令行) 10

1.5 创建有用的对象 12

1.5.1 使用构造函数将值传递给对象 13

1.5.2 使用toString ()方法打印对象 14

1.5.3 覆盖toString ()方法 15

1.5.4 数据并不都是属性值 17

1.6 初始化对象并更改变量 18

1.6.1 使用代码块初始化类 19

1.6.2 Kotlin自动生成getter和setter 20

1.6.3 常量变量不能改变 21

第2章 Kotlin很难出错 25

2.1 继续探究Kotlin类 25

2.1.1 根据类命名文件 26

2.1.2 用包管理类 27

2.1.3 将Person类放入包中 28

2.1.4 类:Kotlin的终极类型 31

2.2 Kotlin有很多类型 31

2.2.1 Kotlin中的数字 31

2.2.2 字母和事物 32

2.2.3 真值或假值 33

2.2.4 类型不可互换I 33

2.2.5 属性必须初始化 34

2.2.6 类型不可互换II 35

2.2.7 Kotlin很容易出错(某种程度上) 37

2.3 覆盖属性访问器和更改器 38

2.3.1 自定义设置(custom-set)属性不能位于主构造函数中 38

2.3.2 覆盖某些属性的更改器 42

2.4 类可以有自定义行为 44

2.4.1 在类中定义自定义方法 44

2.4.2 每个属性都必须初始化 45

2.4.3 有时并不需要属性 48

2.5 类型安全改变一切 50

2.6 代码的编写很少是线性的 50

第3章 Kotlin非常优雅 53

3.1 对象、类与Kotlin 53

3.2 所有类都需要equals()方法 54

3.2.1 equals(x)用于比较两个对象 54

3.2.2 覆盖equals(x)使其有意义 56

3.2.3 每个对象都是一个特定的类型 58

3.2.4 空值 60

3.3 每个对象实例都需要唯一的hashCode() 61

3.3.1 所有类都继承自Any类 61

3.3.2 始终覆盖hashCode()和equals(x) 64

3.3.3 默认哈希值是基于内存位置的 65

3.3.4 使用哈希值生成哈希值 66

3.4 基于有效和快速的equals(x)和hashCode()方法的搜索 67

3.4.1 在hashCode()中区分多个属性 67

3.4.2 用==代替equals(x) 68

3.4.3 hashCode()的快速检查 69

3.5 基本的类方法非常重要 70

第4章 继承很重要 71

4.1 好的类并不总是复杂的类 71

4.1.1 保持简单、直白 72

4.1.2 保持灵活、直白 73

4.2 类可以定义属性的默认值 75

4.2.1 构造函数可以接收默认值 76

4.2.2 Kotlin希望参数有序排列 76

4.2.3 按名称指定参数 77

4.2.4 更改参数顺序 77

4.3 次构造函数可以提供额外的构造选项 78

4.3.1 次构造函数排在主构造函数之后 79

4.3.2 次构造函数可给属性赋值 80

4.3.3 有时,可以将null值赋给属性 82

4.3.4 null属性可能会导致问题 85

4.4 使用自定义更改器处理依赖值 85

4.4.1 在自定义更改器中设置依赖值 86

4.4.2 所有属性赋值都会使用属性的更改器 86

4.4.3 可为空的值可以设置为空 87

4.4.4 限制对依赖值的访问 90

4.4.5 尽可能地计算依赖值 91

4.4.6 只读属性可不用括号 93

4.5 具体应用——子类 95

4.5.1 Any是所有Kotlin类的基类 96

4.5.2 {...}是折叠代码的简略表达 97

4.5.3 类必须是开放的才能有子类 99

4.5.4 术语:子类、继承、基类等 100

4.5.5 子类必须遵循其父类的规则 100

4.5.6 子类拥有其父类的所有行为 101

4.6 子类应不同于父类 101

4.6.1 子类的构造函数经常添加参数 101

4.6.2 不要让不可变属性成为可变属性 102

4.6.3 有时,对象并不完全映射现实世界 103

4.6.4 通常,对象应当映射现实世界 104

第5章 List、Set和Map 105

5.1 List只是事物的集合 105

5.1.1 Kotlin的List:一种集合类型 105

5.1.2 更改可变列表 109

5.1.3 从可变列表获取属性 110

5.2 List(集合)的类型 111

5.2.1 给列表定义类型 111

5.2.2 遍历列表 113

5.2.3 Kotlin会揣摩你的意思 116

5.3 List:有序且可重复 117

5.3.1 有序可以使你按顺序访问列表项 117

5.3.2 List可以包含重复项 118

5.4 Set:无序但唯一 119

5.4.1 在Set中,无法保证顺序 119

5.4.2 何时顺序至关重要 120

5.4.3 动态排序List(和Set) 121

5.4.4 Set不允许有重复项 121

5.4.5 迭代器不(总)是可变的 125

5.5 Map:当单值不够用时 125

5.5.1 Map是由工厂方法创建的 126

5.5.2 使用键查找值 126

5.5.3 你希望值是什么 127

5.6 如何过滤集合 127

5.6.1 基于特定条件的过滤 128

5.6.2 更多有用的过滤器变体 129

5.7 集合:用于基本类型和自定义类型 130

5.7.1 向Person类添加集合 130

5.7.2 允许将集合添加到集合属性 132

5.7.3 Set和MutableSet不一样 134

5.7.4 集合属性只是集合 135

第6章 Kotlin的未来是泛型 137

6.1 泛型允许推迟类型定义 137

6.1.1 集合是泛型的 137

6.1.2 参数化类型在整个类中都可用 138

6.1.3 泛型到底是什么 139

6.2 泛型会尽可能地推断类型 140

6.2.1 Kotlin会寻找匹配的类型 140

6.2.2 Kotlin会寻找*精确匹配的类型 141

6.2.3 Kotlin不会告诉你泛型类型 142

6.2.4 告诉Kotlin你想要什么 143

6.3 协变:类型与赋值的研究 143

6.3.1 什么是泛型类型 143

6.3.2 有些语言需要额外的工作才能实现协变 145

6.3.3 Kotlin实际上也需要额外的工作才能实现协变 145

6.3.4 有时必须把显而易见的事情说清楚 146

6.3.5 协变类型限制输入类型和输出类型 146

6.3.6 协变实际上是使继承按期望的方式工作 146

6.4 逆变:从泛型类型构建消费者 147

6.4.1 逆变:限制输出而不是输入 147

6.4.2 逆变从基类一直到子类都有效 149

6.4.3 逆变类不能返回泛型类型 150

6.4.4 这些真的重要吗 150

6.5 UnsafeVariance:学习规则,然后打破规则 151

6.6 类型投影允许你处理基类 152

6.6.1 型变可以影响函数,而不只是类 152

6.6.2 类型投影告知Kotlin可将子类作为基类的输入 153

6.6.3 生产者不能消费,消费者也不能生产 153

6.6.4 型变不能解决所有问题 154

第7章 控制结构 155

7.1 控制结构是编程的基础 155

7.2 if和else控制结构 156

7.2.1 !!确保非空值 156

7.2.2 控制结构影响代码的流程 157

7.2.3 if和else遵循基本结构 158

7.2.4 表达式和if语句 159

7.3 when是Kotlin版本的Switch 163

7.3.1 每个比较或条件都是一个代码块 163

7.3.2 用else代码块处理其他一切 164

7.3.3 每个分支可以支持一定范围 165

7.3.4 每个分支通常会有部分表达式 166

7.3.5 分支条件按顺序依次检查 168

7.3.6 分支条件只是表达式 169

7.3.7 when语句也可作为一个整体来赋值 169

7.4 for循环 171

7.4.1 Kotlin中的for循环需要一个迭代器 171

7.4.2 你做得越少,Kotlin做得越多 172

7.4.3 for对迭代有要求 173

7.4.4 可以用for获取索引而不是对象 173

7.5 执行while循环直至条件为假 176

7.5.1 while与Boolean条件有关 176

7.5.2 巧用while:多个运算符,一个变量 178

7.5.3 组合控制结构,获得更有趣的解决方案 179

7.6 do...while循环至少运行一次 180

7.6.1 每个do ... while循环都可以改写成一个while循环 180

7.6.2 如果必须先执行一定的操作,那么使用do ... while 181

7.6.3 选用do ... while可能是基于性能的考虑 186

7.7 break可以立即跳出循环 186

7.7.1 break跳过循环中剩余的部分 186

7.7.2 可以使用带标签的break 187

7.8 使用continue立即进入下一次迭代 189

7.8.1 continue也可以使用标签 189

7.8.2 if和continue对比:通常风格更胜过实质 190

7.9 return语句用于返回 191

第8章 数据类 193

......

第9章 枚举和密封类,以及更多专业类 215

......


第10章 函数 247

......

展开全部

作者简介

Brett McLaughlin在技术工作和技术写作方面拥有超过20年的经验。目前,Brett专注于云计算和企业计算。他是一名值得信赖的知名人士,能将繁杂的云概念转化为清晰的执行层愿景从而帮助公司实现云迁移,尤其是Amazon Web Services。他的日常工作就是与需要了解云的关键决策者一起,建立并领导开发和运维团队,带领他们与不断变化的云计算空间进行交互。他*近领导了NASA的Earth Science计划和RockCreek Group集团的金融平台的大规模云迁移。Brett目前还是电子商务平台提供商Volusion的首席技术官。

预估到手价 ×

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

确定
快速
导航