编辑推荐
本店所有图书均为正版 请放心购买,有任何问题请联系在线客户或致电18301102363,谢谢
内容简介
内 容 提 要本书分3部分讲解Kotlin,第1部分(第1~11章)是Kotlin语言的基础部分,主要介绍了Kotlin的基础知识、语法以及大量的“语法糖”,如搭建Kotlin开发环境、数据类型、控制流、类、对象、接口、扩展、委托、Lambda表达式、操作符重载等。第2部分(第12~15章)主要介绍了如何用Kotlin开发Android App。由于Kotlin可以调用JDK中的API,所以在使用Kotlin开发Android App的过程中,很多都是调用JDK的API实现的,但开发语言使用的是Kotlin。因此,这一部分详细介绍了用Kotlin开发Android App 需要掌握的核心知识,如Activity、组件、布局、流文件、SQLite数据库、网络等技术。第3部分(第16章)是一个完整的案例:欧瑞天气。通过这个项目,可以让读者了解利用Kotlin开发Android App的全过程。
作者简介
李宁,欧瑞科技创始人,极客起源IT问答社区创始人,欧瑞学院金-牌讲师,计算机专业硕士。拥有近20年软件开发经验,10年企业内训经验。曾任国内某大型软件公司项目经理。CSDN博客专家、CSDN学院签约讲师、51CTO学院特级讲师。长久以来一直从事JavaScript、Node.js、Java、Kotlin、Python、Android、iOS、C 、Hadoop、Spark、深度学习的开发和技术指导工作。对国内外相关领域的技术、理论和实践有很深的理解和研究。目前已经出版超过30本IT畅销书,主要著作包括《Kotlin程序开发入门精要》《Android深度探索 卷1和卷2》《Android开发权威指南 第1版和第2版》等。
目录
- 第1章 Kotlin开发环境搭建1
- 1.1 Kotlin概述1
- 1.1.1 Kotlin是什么1
- 1.1.2 为什么Kotlin突然成为热门2
- 1.1.3 Kotlin相对于Java有哪些优势2
- 1.1.4 Kotlin能做什么3
- 1.2 在线运行Kotlin代码3
- 1.3 安装和配置Kotlin6
- 1.3.1 安装和配置JDK6
- 1.3.2 Windows下安装和配置Kotlin9
- 1.3.3 Mac OS X下安装和配置Kotlin10
- 1.4 测试Kotlin编译和运行环境10
- 1.4.1 命令行方式使用Kotlin11
- 1.4.2 Kotlin的REPL环境13
- 1.4.3 在命令行中运行脚本文件14
- 1.4.4 在浏览器中运行Kotlin程序14
- 1.4.5 使用Node.js运行Kotlin程序16
- 1.4.6 在小程序中运行Kotlin程序17
- 1.4.7 用Kotlin开启全栈开发模式21
- 1.5 Kotlin中的语法糖22
- 1.6 Kotlin的集成开发环境(IDE)24
- 1.6.1 IntelliJ IDEA 的Kotlin基础开发环境25
- 1.6.2 使用Android Studio和Kotlin开发Android App29
- 1.7 小结34
- 第2章 Kotlin基础知识35
- 2.1 Kotlin的基本语法35
- 2.1.1 定义变量35
- 2.1.2 定义函数36
- 2.1.3 注释37
- 2.2 基础数据类型37
- 2.2.1 数值类型38
- 2.2.2 字符类型39
- 2.2.3 布尔类型41
- 2.2.4 数组41
- 2.2.5 字符串42
- 2.2.6 字符串模板43
- 2.3 包(Package)43
- 2.4 控制流46
- 2.4.1 条件语句46
- 2.4.2 when语句46
- 2.4.3 for循环48
- 2.4.4 while循环49
- 2.5 小结50
- 第3章 类和接口51
- 3.1 类的声明51
- 3.2 构造器51
- 3.2.1 主构造器51
- 3.2.2 第二构造器53
- 3.2.3 Kotlin中的Singleton模式54
- 3.2.4 Kotlin函数中的默认参数55
- 3.2.5 创建类的实例58
- 3.3 类成员58
- 3.3.1 属性的基本用法58
- 3.3.2 属性的getter和setter形式60
- 3.3.3 保存属性值的字段60
- 3.3.4 函数61
- 3.3.5 嵌套类63
- 3.4 修饰符(Modifiers)64
- 3.5 类的继承65
- 3.5.1 Kotlin类如何继承65
- 3.5.2 重写方法65
- 3.5.3 重写属性66
- 3.6 接口67
- 3.7 抽象类68
- 3.8 小结68
- 第4章 枚举类和扩展69
- 4.1 枚举类69
- 4.1.1 枚举类的基本用法69
- 4.1.2 为枚举值指定对应的数值70
- 4.1.3 枚举类的其他功能71
- 4.2 扩展72
- 4.2.1 扩展原生API72
- 4.2.2 扩展自定义类73
- 4.2.3 成员函数冲突的解决方案75
- 4.2.4 扩展属性76
- 4.2.5 扩展伴随对象
- (Companion Object)76
- 4.2.6 扩展的范围77
- 4.2.7 在类中使用扩展77
- 4.2.8 调用特定类的成员函数78
- 4.2.9 扩展成员的继承79
- 4.3 小结80
- 第5章 数据类和封闭类81
- 5.1 数据类(Data Class)81
- 5.1.1 使用数据类81
- 5.1.2 对象复制84
- 5.1.3 数据类成员的解构85
- 5.2 封闭类(Sealed Classes)86
- 5.3 小结86
- 第6章 泛型87
- 6.1 泛型基础87
- 6.2 类型变异88
- 6.3 类型投射90
- 6.4 星号投射92
- 6.5 泛型函数92
- 6.6 泛型约束93
- 6.7 小结93
- 第7章 对象和委托94
- 7.1 对象94
- 7.1.1 对象表达式94
- 7.1.2 声明匿名对象97
- 7.1.3 访问封闭作用域内的变量97
- 7.1.4 陪伴对象99
- 7.2 委托99
- 7.2.1 类的委托99
- 7.2.2 委托属性100
- 7.2.3 委托类的初始化函数102
- 7.2.4 委托的前提条件104
- 7.3 标准委托104
- 7.3.1 惰性装载105
- 7.3.2 可观察属性105
- 7.3.3 阻止属性的赋值操作106
- 7.3.4 Map委托107
- 7.3.5 MutableMap委托108
- 7.4 小结108
- 第8章 高阶函数与Lambda表达式109
- 8.1 高阶函数109
- 8.2 Lambda表达式与匿名函数110
- 8.2.1 函数类型111
- 8.2.2 Lambda表达式的语法111
- 8.2.3 匿名函数112
- 8.2.4 闭包(Closure)113
- 8.3 小结113
- 第9章 函数114
- 9.1 函数基本用法114
- 9.2 使用中缀标记法调用函数114
- 9.3 单表达式函数115
- 9.4 函数参数和返回值116
- 9.4.1 可变参数116
- 9.4.2 返回值类型117
- 9.5 函数的范围117
- 9.5.1 局部函数117
- 9.5.2 成员函数118
- 9.6 泛型函数118
- 9.7 内联函数119
- 9.7.1 让Lambda表达式内联进函数119
- 9.7.2 内联部分Lambda表达式121
- 9.7.3 非局部返回(Non-local return)124
- 9.7.4 实体化的类型参数(Reified type parameter)125
- 9.7.5 内联属性126
- 9.8 小结127
- 第10章 其他Kotlin技术(1)128
- 10.1 数据解构128
- 10.2 集合130
- 10.3 值范围132
- 10.3.1 值范围的应用132
- 10.3.2 值范围的工作原理134
- 10.3.3 常用工具函数135
- 10.4 类型检查与类型转换136
- 10.4.1 is与!is操作符136
- 10.4.2 智能类型转换138
- 10.4.3 强行类型转换139
- 10.5 this表达式140
- 10.6 相等判断140
- 10.7 操作符重载141
- 10.7.1 一元操作符重载141
- 10.7.2 二元操作符142
- 10.7.3 方括号操作符重载144
- 10.7.4 赋值操作符重载146
- 10.7.5 逻辑操作符重载147
- 10.8 小结149
- 第11章 其他Kotlin技术(2)150
- 11.1 null值安全性150
- 11.1.1 可为null的类型与不可为null的类型150
- 11.1.2 在条件语句中进行null检查151
- 11.1.3 安全调用操作符152
- 11.1.4 Elvis操作符152
- 11.1.5 !!操作符153
- 11.1.6 安全的类型转换153
- 11.1.7 可为null的类型构成的集合153
- 11.2 异常类153
- 11.3 注解(Annotations)155
- 11.3.1 使用注解156
- 11.3.2 注解类的构造器157
- 11.3.3 Lambda表达式158
- 11.4 反射(Reflection)158
- 11.4.1 类引用(Class Reference)159
- 11.4.2 枚举类成员159
- 11.4.3 动态调用成员函数161
- 11.4.4 动态调用成员属性161
- 11.5 小结163
- 第12章 Android的窗口——Activity164
- 12.1 什么是Activity164
- 12.2 Activity的基本用法164
- 12.2.1 创建一个不包含任何Activity的Android工程165
- 12.2.2 手动创建Activity167
- 12.2.3 创建和加载布局168
- 12.2.4 在AndroidManifest文件中注册Activity172
- 12.2.5 编译和运行Android工程172
- 12.2.6 为Activity添加新组件173
- 12.2.7 为Activity添加逻辑代码174
- 12.2.8 为Activity添加Toast175
- 12.2.9 关闭Activity178
- 12.3 使用Intent连接多个Activity178
- 12.3.1 使用显式Intent179
- 12.3.2 使用隐式Intent182
- 12.3.3 为隐式Intent设置更多的过滤条件185
- 12.3.4 使用隐式Intent访问系统App187
- 12.4 向Activity中传递数据189
- 12.5 从Activity返回数据191
- 12.6 Activity的生命周期192
- 12.7 记录当前活动的Activity196
- 12.8 小结197
- 第13章 Android App的装饰工具——UI组件与布局198
- 13.1 如何编写程序界面198
- 13.2 常用的UI组件198
- 13.2.1 文本显示组件(TextView)198
- 13.2.2 按钮组件(Button)202
- 13.2.3 文本编辑组件(EditText)206
- 13.2.4 图像组件(ImageView)210
- 13.2.5 进度条组件(ProgressBar)213
- 13.2.6 对话框组件(AlertDialog)216
- 13.3 布局详解217
- 13.3.1 线性布局(LinearLayout)217
- 13.3.2 相对布局(RelativeLayout)222
- 13.3.3 帧布局(FrameLayout)226
- 13.3.4 百分比布局(PercentFrameLayout)227
- 13.4 小结230
- 第14章 永久保存数据的方式——持久化技术231
- 14.1 SharedPreferences存储231
- 14.1.1 将数据存储到SharedPreferences中231
- 14.1.2 从SharedPreferences读取数据234
- 14.1.3 利用SharedPreferences存取用户名和密码235
- 14.2 文件流操作239
- 14.2.1 openFileOutput和openFileInput方法239
- 14.2.2 读写SD卡上的文件242
- 14.3 App权限的授予和拒绝248
- 14.4 读写JSON格式的数据250
- 14.5 SQLite数据库257
- 14.5.1 SQLite数据库管理工具257
- 14.5.2 创建SQLite数据库和数据表261
- 14.5.3 向SQLite数据表中插入数据264
- 14.5.4 删除SQLite数据表中的数据265
- 14.5.5 更新SQLite数据表中的数据266
- 14.5.6 查询SQLite表中的数据267
- 14.5.7 将数据库与App一起发布268
- 14.6 小结270
- 第15章 连接外部世界——网络技术271
- 15.1 WebView组件271
- 15.2 使用HTTP与服务端进行交互273
- 15.2.1 使用HttpURLConnection273
- 15.2.2 使用OkHttp276
- 15.3 小结282
- 第16章 项目实战——欧瑞天气App283
- 16.1 项目概述283
- 16.2 添加依赖284
- 16.3 实现主窗口285
- 16.4 显示地区列表286
- 16.4.1 描述城市信息的数据类286
- 16.4.2 处理JSON格式的城市列表信息286
- 16.4.3 天气信息描述类288
- 16.4.4 获取城市信息的对象290
- 16.4.5 在ListView组件中显示地区列表293
- 16.5 显示天气信息298
- 16.6 小结303