新書推薦:
《
拯救免疫失衡
》
售價:NT$
254.0
《
收尸人
》
售價:NT$
332.0
《
大模型应用开发:RAG入门与实战
》
售價:NT$
407.0
《
不挨饿快速瘦的减脂餐
》
售價:NT$
305.0
《
形而上学与存在论之间:费希特知识学研究(守望者)(德国古典哲学研究译丛)
》
售價:NT$
504.0
《
卫宫家今天的饭9 附画集特装版(含漫画1本+画集1本+卫宫士郎购物清单2张+特制相卡1张)
》
售價:NT$
602.0
《
化妆品学原理
》
售價:NT$
254.0
《
万千教育学前·与幼儿一起解决问题:捕捉幼儿园一日生活中的教育契机
》
售價:NT$
214.0
|
內容簡介: |
本书详细阐述了与Kotlin程序设计相关的基本解决方案,主要包括Kotlin语言基础知识、函数、类和对象、泛型、扩展函数和属性、委托机制,以及Marvel Gallery项目实战等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
|
目錄:
|
目 录
第1章 开启Kotlin编程之旅 1
1.1 Kotlin语言简介 1
1.2 示例 3
1.3 处理Kotlin代码 8
1.3.1 Kotlin Playground 8
1.3.2 Android Studio 10
1.4 Kotlin底层机制 16
1.5 Kotlin的其他优势 17
1.6 本章小结 18
第2章 Kotlin语言基础知识 19
2.1 变量 19
2.2 类型推断 21
2.3 严格的空保护机制 24
2.3.1 安全调用 27
2.3.2 elvis操作符 28
2.3.3 非空断言 29
2.3.4 let 30
2.4 可空性和Java 30
2.5 转换 32
2.5.1 安全不安全转换操作符 32
2.5.2 智能转换 34
2.6 基本数据类型 37
2.6.1 数字 38
2.6.2 字符 40
2.6.3 数组 40
2.6.4 布尔类型 42
2.7 复合数据类型 42
2.7.1 字符串 42
2.7.2 范围 43
2.7.3 集合 45
2.8 语句和表达式 45
2.9 控制流 46
2.9.1 if语句 46
2.9.2 when表达式 47
2.9.3 循环 50
2.9.4 break和continue 52
2.10 异常 56
2.11 编译期常量 59
2.12 委托机制 59
2.13 本章小结 60
第3章 函数 61
3.1 基本的函数声明和应用 61
3.1.1 参数 62
3.1.2 返回函数 64
3.2 vararg参数 65
3.3 单表达式函数 67
3.4 尾递归函数 69
3.5 调用函数的不同方式 70
3.5.1 默认参数值 71
3.5.2 命名参数语法 71
3.6 顶级函数 72
3.7 顶级函数的底层机制 74
3.8 局部函数 76
3.9 无返回类型 77
3.10 本章小结 79
第4章 类和对象 80
4.1 类 80
4.2 属性 81
4.2.1 读-写属性和只读属性 84
4.2.2 属性访问语法 85
4.2.3 自定义gettersetter 88
4.2.4 延迟初始化属性 91
4.2.5 注解属性 92
4.2.6 内联属性 93
4.3 构造函数 93
4.3.1 属性和构造函数参数 95
4.3.2 包含默认参数的构造函数 96
4.4 继承 97
4.5 接口 101
4.6 数据类 105
4.6.1 equals和hashCode方法 106
4.6.2 toString方法 108
4.6.3 copy方法 109
4.6.4 解构声明 110
4.7 操作符重载 111
4.8 对象声明 115
4.9 对象表达式 117
4.10 伴生对象 119
4.11 枚举类 124
4.12 命名方法的中缀调用 127
4.13 可见性修饰符 130
4.14 密封类 134
4.15 嵌套类 136
4.16 导入别名 137
4.17 本章小结 138
第5章 函数一等公民 140
5.1 函数类型 140
5.2 匿名函数 142
5.3 Lambda表达式 144
5.4 高阶函数 147
5.4.1 向函数提供操作 149
5.4.2 观察者(监听器)模式 150
5.4.3 线程操作后的回调 151
5.5 命名参数和Lambda表达式的组合 152
5.6 参数规则中最后一个Lambda 152
5.6.1 命名代码的包围机制 154
5.6.2 利用LINQ风格处理数据结构 155
5.7 Kotlin中的Java SAM支持 156
5.8 命名Kotlin函数类型 158
5.8.1 函数类型中的命名参数 158
5.8.2 类型别名 160
5.9 针对未使用变量的下划线 162
5.10 Lambda表达式中的解构机制 162
5.11 内联函数 164
5.11.1 noinline修饰符 167
5.11.2 非本地返回 167
5.11.3 Lambda表达式中的标记返回 170
5.11.4 crossinline修饰符 173
5.11.5 inline属性 174
5.12 函数引用 175
5.13 本章小结 178
第6章 泛型 179
6.1 泛型概述 179
6.2 泛型约束条件 181
6.3 变型 184
6.3.1 变型修饰符 186
6.3.2 使用位置变型和声明位置变型 187
6.3.3 集合变型 189
6.3.4 变型的生产者消费者限制条件 191
6.3.5 不可变构造函数 193
6.4 类型擦除 193
6.4.1 reified类型参数 195
6.4.2 startActivity方法 196
6.5 星号投射 197
6.6 类型参数命名规则 199
6.7 本章小结 200
第7章 扩展函数和属性 201
7.1 扩展函数 201
7.1.1 扩展函数底层机制 203
7.1.2 伴生对象扩展 206
7.1.3 通过扩展函数重载操作符 207
7.1.4 顶级函数的应用位置 207
7.2 扩展属性 208
7.3 成员扩展函数和属性 211
7.3.1 接收者类型 214
7.3.2 成员扩展函数和属性的底层机制 216
7.4 泛型扩展函数 217
7.4.1 Kotlin集合类型层次结构 220
7.4.2 map、filter和flatMap函数 223
7.4.3 forEach和onEach函数 225
7.4.4 withIndex以及索引变化版本 225
7.4.5 sum、count、min、max和排序函数 226
7.4.6 其他流处理函数 229
7.4.7 集合流处理示例 230
7.4.8 序列 231
7.5 包含接收者的函数字面值 233
7.5.1 Kotlin标准库函数 234
7.5.2 特定领域内的语言 241
7.6 本章小结 248
第8章 委托机制 249
8.1 类委托 249
8.1.1 委托模式 249
8.1.2 装饰器模式 254
8.2 属性委托 256
8.2.1 属性委托的含义 256
8.2.2 预定义委托 259
8.2.3 自定义委托 272
8.3 本章小结 282
第9章 Marvel Gallery项目实战 283
9.1 Marvel Gallery应用程序 283
9.1.1 如何阅读本章内容 283
9.1.2 创建空项目 286
9.1.3 任务图片库 288
9.1.4 人物角色搜索 328
9.1.5 人物角色的资料显示 338
9.2 本章小结 353
|
內容試閱:
|
前言当前,Android应用程序开发已成普遍之势。在过去的几年中,人们见证了各种工具的发展历程;同时,技术的发展也让我们的生活变得更为便捷。尽管如此,Android应用程序开发的核心元素却从未发生改变,即Java。Android平台可适应新版本的Java,但一般需要等待很长一段时间,直到最新的Android设备达到一定的市场规模。此外,Java应用程序开发也面临着一系列的挑战,其原因在于:Java是一种古老的语言,存在着某些设计问题;考虑到向后兼容性的限制,这些问题并不能简单地予以解决。另一方面,Kotlin是一种新型语言且具有较好的稳定性,并可在所有Android设备上运行,同时还解决了Java无法处理的许多问题。Kotlin为Android开发平台引入了许多已被证实的编程概念,使得开发过程变得更加轻松,并可生成更具安全性、表现力和简洁的代码。本书内容具有易于阅读、实用性强等特征,将帮助读者提升、改进Android平台上的Kotlin开发体验。另外,本书将在Java和解决常见问题的新方法上提供许多快捷方式和改进方案。在本书的最后,读者将熟悉Kotlin的各项功能和相关工具,并具备在Kotlin中开发Android应用程序的能力。本书内容第1章讨论Kotlin语言及其特性,同时阐述为何要使用这门语言进行开发。随后将引入Kotlin平台,并展示Kotlin与Android之间的适配方式。第2章主要涉及Kotlin的模块构建,并展示该语言中的各种结构、数据类型,以及诸多简化特性。第3章介绍函数的定义和调用方式、函数限定符以及函数的定义位置。第4章介绍Kotlin语言中与面向对象相关的各种特性,读者将领略不同的类定义,以及与可读性相关的某些改进特性,如属性操作符重载和中缀调用。第5章讨论了Kotlin所支持的函数编程。第6章探讨泛型类、接口以及函数等内容,并深入考察Kotlin中的泛型机制。第7章介绍如何向现有类中添加新的操作行为,且无须使用继承机制。除此之外,还将考察集合、流处理方面的简单操作方法。第8章将阐述Kotlin中类委托模式的简化方式,这也是该语言内建特性之一。同时还将展示内建属性委托和自定义委托的应用方式。第9章将通过本书所讨论的诸多特性编写一个功能丰富的Android应用程序。准备工作当测试并使用本书中的代码时,读者只需安装Android Studio即可。第1章解释了如何启动新项目、对应代码示例的检查方式,以及大部分代码在未安装任何程序的情况下如何进行测试。适用读者当阅读本书时,读者应熟悉以下两方面内容:● 了解Java和面向对象的编程概念,包括对象、类、构造方法、接口、方法、getter方法、setter方法和泛型类型。否则,读者将很难理解本书中的相关内容。对此,读者可阅读任何一本Java语言的入门书籍。● 读者应尽量了解Android平台,从而可深入理解书中所展示的各项示例,以及Kotlin所处理的各种问题。当然,本书对此并不做强制性要求。如果读者是一名拥有6~12个月编程经验的Android开发者,抑或曾编写了少量的Android应用程序,那么本书将十分适合你。另一方面,如果读者了解OOP概念,但对Android平台了解有限,那么仍可阅读本书的大部分内容。同时,也希望读者具备开阔的头脑,以及对新技术的渴望之心,这对于程序设计学习来说十分有益。如果本书内容在某些方面引起了读者的好奇之心,那么尽可大胆尝试。本书约定代码块通过下列方式设置:
val capitol = "England" to "London"printlncapitol.first Prints: Englandprintlncapitol.second Prints: London
代码中的重点内容则采用黑体表示:
ext.kotlin_version = ''1.1.3''repositories {maven { url ''https:maven.google.com'' }jcenter}
命令行输入或输出如下所示:
sdk install kotlin 图标表示较为重要的说明事项。 图标则表示提示信息和操作技巧。读者反馈和客户支持欢迎读者对本书的建议或意见予以反馈,以进一步了解读者的阅读喜好。反馈意见对于我们来说十分重要,以便改进我们日后的工作。对此,读者可向feedback@ packtpub.com发送邮件,并以书名作为邮件标题。若读者针对某项技术具有专家级的见解,抑或计划撰写书籍或完善某部著作的出版工作,则可访问www.packtpub.com authors。对于本书的读者,我们将对每一名用户提供竭诚的服务。资源下载读者可访问http:www.packtpub.com并通过个人账户下载示例代码文件。另外,在http:www.packtpub.comsupport中注册成功后,我们将以电子邮件的方式将相关文件发与读者。读者可根据下列步骤下载代码文件:● 通过个人电子邮件地址和密码登录并注册我们的网站。● 选择SUPPORT选项卡。● 单击Code Downloads & Errata。● 在Search文本框中输入书名。● 选择本书对应的代码文件。● 从下拉菜单中选择本书的购买方式。● 单击Code Download。● 当文件下载完毕后,确保使用下列最新版本软件解压文件夹:● Windows系统下的WinRAR7-Zip。● Mac系统下的ZipegiZipUnRarX。● Linux系统下的7-ZipPeaZip。另外,读者还可访问GitHub获取本书的代码包,对应网址为https:github.comPackt PublishingAndroid-Development-with-Kotlin。此外,读者还可访问https:github.comPackt Publishing以了解丰富的代码和视频资源。勘误表尽管我们在最大程度上做到尽善尽美,但错误依然在所难免。如果读者发现谬误之处,无论是文字错误抑或是代码错误,还望不吝赐教。对于其他读者以及本书的再版工作,这将具有十分重要的意义。对此,读者可访问http:www.packtpub.comsubmit-errata,选取对应书籍,单击ErrataSubmissionForm超链接,并输入相关问题的详细内容。经确认后,填写内容将被提交至网站,或添加至现有勘误表中(位于该书籍的Errata部分)。另外,读者还可访问http:www.packtpub.combookscontentsupport查看之前的勘误表。在搜索框中输入书名后,所需信息将显示于Errata项中。版权须知一直以来,互联网上的版权问题从未间断,Packt出版社对此类问题异常重视。若读者在互联网上发现本书任意形式的副本,请告知网络地址或网站名称,我们将对此予以处理。关于盗版问题,读者可发送邮件至copyright@packtpub.com。对于作者的爱护,我们表示衷心的感谢,并于日后向读者呈现更为精彩的作品。问题解答若读者对本书有任何疑问,均可发送邮件至questions@packtpub.com,我们将竭诚为您服务。
|
|