目录
第1章Kotlin基础
1.1Kotlin简介
1.1.1第一个Kotlin程序
1.1.2Kotlin的语法糖
1.2变量
1.2.1val和var
1.2.2类型推断
1.3基本类型
1.4区间
1.5循环结构
1.6异常处理
1.7相等运算符
1.8可见性修饰符
1.9控制流程
1.9.1if表达式
1.9.2when表达式
习题
第2章Kotlin方法
2.1方法的定义
2.1.1单行表达式方法
2.1.2成员方法
2.1.3本地方法
2.1.4顶层方法
2.1.5字面量方法
2.1.6尾递归方法
2.1.7纯方法
2.2参数
2.2.1命名参数
2.2.2默认参数
2.2.3可变参数
2.3常见操作符
2.3.1一元操作符
2.3.2二元操作符
习题
第3章Kotlin类
3.1类的基本用法
3.1.1类与对象
3.1.2访问级别
3.1.3内部类
3.1.4静态方法
3.2继承
3.3接口
3.4抽象类
3.4.1抽象类的定义
3.4.2抽象类的使用
3.4.3抽象类的特点
3.4.4抽象类的规则
3.4.5抽象类的实际应用
3.4.6抽象类和接口的差异
3.5扩展
3.5.1扩展函数
3.5.2扩展属性
3.5.3伴生对象的扩展
3.5.4扩展的作用域
3.6枚举
3.7密封类
3.8数据类
3.8.1数据类的特性
3.8.2Kotlin中数据类的简洁性
习题
第4章空安全、反射、注解
4.1空安全
4.1.1可空类型
4.1.2智能转换
4.1.3访问可空变量
4.1.4强制操作符
4.1.5Elvis操作符
4.1.6安全转换
4.2反射
4.2.1Java虚拟机的体系结构
4.2.2获取类的信息
4.2.3获取类的其他信息
4.2.4在Kotlin中使用Java中的反射
4.2.5Kotlin中的KClass反射
4.3注解
4.3.1Java注解的组成部分
4.3.2在Java中定义Annotation
4.3.3Java中的常见注解
4.3.4让Java程序认识注解
4.3.5在Kotlin中使用注解
4.4兼容问题
习题
第5章Kotlin属性
5.1一般属性
5.1.1为什么使用属性
5.1.2语法和变量
5.1.3属性的访问规则
5.2延迟加载和懒加载
5.2.1延迟加载
5.2.2懒加载
5.2.3延迟加载和懒加载的差异
5.3委托属性
5.3.1什么是委托属性
5.3.2懒加载属性
5.3.3可观察属性
5.3.4把属性存储在映射中
5.3.5局部委托属性
5.3.6属性委托的要求
5.3.7翻译规则
5.4用属性还是方法
习题
第6章Kotlin泛型与集合
6.1泛型简介
6.2型变
6.2.1Java的类型通配符
6.2.2协变与逆变
6.2.3协变和逆变都是类型安全的
6.3Kotlin泛型的特色
6.3.1out T与in T
6.3.2声明处型变
6.3.3类型投影
6.3.4泛型函数和泛型类
6.4泛型小结
6.5初识集合
6.5.1Iterable
6.5.2MutableIterable
6.5.3Collection
6.5.4MutableCollection
6.6Set
6.6.1概述
6.6.2SetAPI
6.6.3只读Set
6.6.4可变Set
6.6.5与Java的比较
6.7List
6.7.1概述
6.7.2常用API
6.7.3相关操作
6.8Map
6.8.1概述
6.8.2相关操作
习题
第7章高阶函数
7.1函数作为参数
7.2函数作为返回值
7.3函数赋值
7.4闭包
7.5匿名函数
7.6函数的引用
7.6.1顶级函数的引用
7.6.2成员函数和扩展函数的引用
7.7函数接收器
7.8记忆化
7.8.1概述
7.8.2实现记忆化
习题
第8章Kotlin DSL
8.1DSL
8.1.1通用编程语言和DSL
8.1.2API和DSL
8.1.3内部DSL
8.2有趣的Kotlin DSL
8.2.1日期
8.2.2单元测试
8.2.3HTML构建器
8.2.4SQL
8.2.5Android布局
8.2.6Gradle构建
8.3实现原理
8.3.1扩展函数
8.3.2Lambda表达式和高阶函数
8.3.3中缀调用
8.3.4invoke约定
习题
第9章初识Android Studio
9.1Android Studio的特性
9.1.1无比强大的开发工具
9.1.2比以往更快的编码和访问速度
9.1.3无限制配置构建
9.1.4满怀信心地编码
9.1.5创建丰富且关联的应用
9.1.6消除令人厌烦的任务
9.2使用Android Studio
9.2.1项目结构
9.2.2界面
9.2.3调试和分析工具
9.3Android项目结构概览
9.3.1模块
9.3.2项目文件
9.3.3项目结构设置
9.4创建第一个Android Studio项目
9.4.1启动新项目
9.4.2导入现有项目
9.4.3添加Kotlin代码
习题
第10章Android Gradle
10.1Android Gradle编译文件
10.1.1settings.gradle
10.1.2顶级的build.gradle
10.1.3app模块的build.gradle
10.2配置SDK版本号以及其他默认配置
10.3Gradle编译
10.3.1在命令行中执行Gradle编译
10.3.2在Android Studio中执行Gradle编译
10.4处理依赖
10.4.1添加Java库依赖
10.4.2同步
10.4.3依赖传递
10.4.4使用Android Studio添加库依赖
10.4.5Configuring Repository
10.5设置工程属性
10.6升级新版本的Gradle
习题
第11章Activity和Fragment
11.1Activity
11.1.1概述
11.1.2Activity的创建方法
11.1.3Activity的生命周期
11.1.4Activity之间的通信
11.1.5Activity的4种启动模式
11.2Fragment
11.2.1概述
11.2.2动态添加Fragment
11.2.3Fragment的生命周期
11.2.4Fragment的通信
习题
第12章Service和广播
12.1Service详解
12.1.1Service的基本用法
12.1.2Service的生命周期
12.1.3Service和Activity进行通信
12.1.4前台服务
12.1.5Service和Thread的关系
12.2广播
12.2.1概述
12.2.2静态注册
12.2.3动态注册
12.2.4本地广播
12.2.5使用私有权限
12.2.6实战演练
习题
第13章Kotlin实战之简单天气
13.1RxJava介绍
13.1.1作用
13.1.2项目引用
13.1.3概念
13.1.4RxJava中的观察者模式
13.1.5基本的用法
13.1.6RxJava中的操作符
13.1.7RxJava中的Scheduler
13.1.8RxJava在网络请求中的使用
13.2Disposable简介及使用
13.2.1Disposable简介
13.2.2Disposable对象的获得
13.3Flowable
13.3.1Flowable的产生
13.3.2处理Backpressure的策略
13.4天气数据源
13.4.1数据源简介
13.4.2API地址和常用参数
13.4.3获取JSON展示样例
13.5Demo开发
13.5.1创建项目
13.5.2建立数据模型
13.5.3请求数据
13.6UI界面交互和数据
13.6.1主页面的实现
13.6.2搜索城市页面的实现
13.6.3当前天气页面的实现
13.6.4多日预报页面的实现
13.6.5分时查询页面的实现
第14章Kotlin实战之会议App
14.1Dagger2介绍
14.2Dagger2的使用
14.2.1引入Dagger2
14.2.2注解的使用
14.3Room DB存储
14.3.1Room的3大组件
14.3.2Room的实际使用
14.4导入第三方依赖库
14.5界面分析
14.5.1首页的实现
14.5.2个人主页
14.5.3详情页面
参考文献