资源名称:疯狂Kotlin讲义
内容简介:
Kotlin是JetBrains在2011年推出的一门全新的编程语言,这门语言最早被设计成运行在JVM上——使用Kotlin编写的程序会被编译成字节码文件,该字节码文件可直接在JVM上运行(用java,命令运行)。目前Google已推荐使用Kotlin作为Android的官方开发语言,这意味着Kotlin将会在Android开发上大放异彩。
《疯狂Kotlin讲义》全面介绍了Kotlin的语法。从各平台上Kotlin程序的编译、运行开始介绍,详细介绍了Kotlin的基本语法,Kotlin的数组和集合,Kotlin函数式编程特征,Kotlin的面向对象编程、异常处理、泛型和注解,还介绍了Kotlin与Java混合调用的相关内容,以及Kotlin反射相关内容。
《疯狂Kotlin讲义》对Kotlin的解读十分系统、全面,超过Kotlin官方文档本身覆盖的内容。本书很多地方都会结合Java字节码进行深入解读,比如对Kotlin扩展的解读,对Kotlin主、次构造器的解读,这种解读目的不止于教会读者简单地掌握Kotlin的用法,而是力求让读者深入理解Kotlin,且更好地理解Java。简单来说,本书不仅是一本Kotlin的学习图书,而且也是一本能让你更深入地理解Java的图书。如果读者在阅读本书时遇到了技术问题,可以登录疯狂Java联盟(razyit.org)发帖,笔者将会及时予以解答。
《疯狂Kotlin讲义》为所有打算深入掌握Kotlin编程的读者而编写,尤其适合从Java转Kotlin的学
习者和开发者阅读,也适合作为大学教育、培训机构的Kotlin教材。
资源目录:
第1章 Kotlin语言与开发环境1
1.1 Kotlin语言简介2
1.1.1 服务端的Kotlin2
1.1.2 使用Kotlin开发Android应用2
1.1.3 Kotlin用于Javascript3
1.2 使用命令行编译、运行Kotlin3
1.2.1 下载和安装Kotlin的SDK3
1.2.2 第一个Kotlin程序4
1.2.3 编译、运行Kotlin程序5
1.3 使用IntelliJ IDEA编译、运行Kotlin6
1.4 使用Eclipse编译、运行Kotlin8
1.5 本章小结10
第2章 Kotlin的基础类型11
2.1 注释12
2.1.1 单行注释和多行注释12
2.1.2 文档注释12
2.2 变量14
2.2.1 分隔符15
2.2.2 标识符规则16
2.2.3 Kotlin的关键字17
2.2.4 声明变量19
2.3 整型21
2.4 浮点型23
2.5 字符型24
2.6 数值型之间的类型转换25
2.6.1 整型之间的转换25
2.6.2 浮点型与整型之间的转换28
2.6.3 表达式类型的自动提升28
2.7 Boolean类型30
2.8 null安全31
2.8.1 非空类型和可空类型31
2.8.2 先判断后使用32
2.8.3 安全调用32
2.8.4 Elvis运算33
2.8.5 强制调用34
2.9 字符串34
2.9.1 字符串类型34
2.9.2 字符串模板35
2.9.3 Kotlin字符串的方法36
2.10 类型别名37
2.11 本章小结38
第3章 运算符和表达式39
3.1 与Java相同的运算符40
3.1.1 单目前缀运算符40
3.1.2 自加和自减运算符41
3.1.3 双目算术运算符41
3.1.4 in和!in运算符42
3.1.5 索引访问运算符43
3.1.6 调用运算符43
3.1.7 广义赋值运算符44
3.1.8 相等与不等运算符44
3.1.9 比较运算符45
3.2 位运算符46
3.3 区间运算符48
3.3.1 闭区间运算符48
3.3.2 半开区间运算符49
3.3.3 反向区间49
3.3.4 区间步长49
3.4 运算符重载50
3.4.1 重载单目前缀运算符50
3.4.2 重载自加和自减运算符51
3.4.3 重载双目算术运算符51
3.5 本章小结52
第4章 流程控制53
4.1 顺序结构54
4.2 分支结构54
4.2.1 if分支54
4.2.2 if表达式58
4.2.3 when分支语句58
4.2.4 when表达式61
4.2.5 when分支处理范围62
4.2.6 when分支处理类型62
4.2.7 when条件分支63
4.3 循环结构63
4.3.1 while循环64
4.3.2 do while循环65
4.3.3 for-in循环66
4.3.4 嵌套循环66
4.4 控制循环结构68
4.4.1 使用break结束循环68
4.4.2 使用continue忽略本次循环的
剩下语句69
4.4.3 使用return结束方法70
4.5 本章小结71
第5章 数组和集合72
5.1 数组73
5.1.1 创建数组73
5.1.2 使用数组75
5.1.3 使用for-in循环遍历数组76
5.1.4 使用数组索引76
5.1.5 数组的常用方法77
5.1.6 多维数组80
5.1.7 数组的应用举例82
5.2 Kotlin集合概述85
5.3 Set集合88
5.3.1 声明和创建Set集合88
5.3.2 使用Set的方法90
5.3.3 遍历Set91
5.3.4 可变的Set92
5.4 List集合93
5.4.1 声明和创建List集合93
5.4.2 使用List的方法94
5.4.3 可变的List95
5.5 Map集合95
5.5.1 声明和创建Map集合95
5.5.2 使用Map的方法97
5.5.3 遍历Map98
5.5.4 可变的Map98
5.6 本章小结99
第6章 函数和Lambda表达式100
6.1 函数入门101
6.1.1 定义和调用函数101
6.1.2 函数返回值和Unit102
6.1.3 递归函数103
6.1.4 单表达式函数104
6.2 函数的形参105
6.2.1 命名参数105
6.2.2 形参默认值106
6.2.3 尾递归函数108
6.2.4 个数可变的形参109
6.3 函数重载110
6.4 局部函数111
6.5 高阶函数112
6.5.1 使用函数类型112
6.5.2 使用函数类型作为形参类型113
6.5.3 使用函数类型作为返回值类型114
6.6 局部函数与Lambda表达式115
6.6.1 回顾局部函数116
6.6.2 使用Lambda表达式代替局部函数116
6.6.3 Lambda表达式的脱离117
6.7 Lambda表达式117
6.7.1 调用Lambda表达式118
6.7.2 利用上下文推断类型118
6.7.3 省略形参名119
6.7.4 调用Lambda表达式的约定120
6.7.5 个数可变的参数和Lambda参数120
6.8 匿名函数121
6.8.1 匿名函数的用法121
6.8.2 匿名函数和Lambda表达式
的return122
6.9 捕获上下文中的变量和常量123
6.10 内联函数125
6.10.1 内联函数的使用125
6.10.2 部分禁止内联126
6.10.3 非局部返回127
6.11 本章小结128
第7章 面向对象(上)129
7.1 类和对象130
7.1.1 定义类130
7.1.2 对象的产生和使用132
7.1.3 对象的this引用133
7.2 方法详解136
7.2.1 方法与函数的关系136
7.2.2 中缀表示法137
7.2.3 componentN方法与解构138
7.2.4 数据类和返回多个值的函数140
7.2.5 在Lambda表达式中解构141
7.3 属性和字段142
7.3.1 读写属性和只读属性142
7.3.2 自定义getter和setter144
7.3.3 幕后字段147
7.3.4 幕后属性148
7.3.5 延迟初始化属性149
7.3.6 内联属性150
7.4 隐藏和封装151
7.4.1 包和导包151
7.4.2 Kotlin的默认导入153
7.4.3 使用访问控制符153
7.5 深入构造器155
7.5.1 主构造器和初始化块156
7.5.2 次构造器和构造器重载158
7.5.3 主构造器声明属性161
7.6 类的继承161
7.6.1 继承的语法161
7.6.2 重写父类的方法164
7.6.3 重写父类的属性166
7.6.4 super限定167
7.6.5 强制重写168
7.7 多态169
7.7.1 多态性169
7.7.2 使用is检查类型170
7.7.3 使用as运算符转型172
7.8 本章小结174
第8章 面向对象(下)175
8.1 扩展176
8.1.1 扩展方法176
8.1.2 扩展的实现机制179
8.1.3 为可空类型扩展方法182
8.1.4 扩展属性182
8.1.5 以成员方式定义扩展183
8.1.6 带接收者的匿名函数184
8.1.7 何时使用扩展186
8.2 final和open修饰符187
8.2.1 可执行“宏替换”的常量187
8.2.2 final属性188
8.2.3 final方法189
8.2.4 final类190
8.2.5 不可变类190
8.3 抽象类192
8.3.1 抽象成员和抽象类192
8.3.2 抽象类的作用195
8.3.3 密封类196
8.4 接口198
8.4.1 接口的定义198
8.4.2 接口的继承199
8.4.3 使用接口200
8.4.4 接口和抽象类202
8.5 嵌套类和内部类202
8.5.1 内部类204
8.5.2 嵌套类207
8.5.3 在外部类以外使用内部类209
8.5.4 在外部类以外使用嵌套类209
8.5.5 局部嵌套类210
8.5.6 匿名内部类211
8.6 对象表达式和对象声明212
8.6.1 对象表达式212
8.6.2 对象声明和单例模式215
8.6.3 伴生对象和静态成员217
8.6.4 伴生对象的扩展218
8.7 枚举类219
8.7.1 枚举类入门219
8.7.2 枚举类的属性、方法和构造器221
8.7.3 实现接口的枚举类222
8.7.4 包含抽象方法的抽象枚举类222
8.8 类委托和属性委托223
8.8.1 类委托224
8.8.2 属性委托225
8.8.3 延迟属性227
8.8.4 属性监听228
8.8.5 使用Map存储属性值230
8.8.6 局部属性委托231
8.8.7 委托工厂233
8.9 本章小结234
第9章 异常处理236
9.1 异常处理机制237
9.1.1 使用try…catch捕获异常237
9.1.2 异常类的继承体系240
9.1.3 访问异常信息242
9.1.4 异常处理嵌套243
9.1.5 try语句是表达式243
9.2 使用throw抛出异常243
9.2.1 抛出异常243
9.2.2 自定义异常类244
9.2.3 catch和throw同时使用245
9.2.4 异常链246
9.2.5 throw语句是表达式247
9.3 异常的跟踪栈248
9.4 本章小结250
第10章 泛型251
10.1 泛型入门252
10.1.1 定义泛型接口、类252
10.1.2 从泛型类派生子类253
10.2 型变254
10.2.1 泛型型变的需要254
10.2.2 声明处型变256
10.2.3 使用处型变:类型投影258
10.2.4 星号投影260
10.3 泛型函数261
10.3.1 泛型函数的使用261
10.3.2 具体化类型参数262
10.4 设定类型形参的上限263
10.5 本章小结264
第11章 注解266
11.1 Kotlin注解入门267
11.1.1 定义注解267
11.1.2 注解的属性和构造器268
11.2 元注解270
11.2.1 使用@Retention270
11.2.2 使用@Target271
11.2.3 使用@MustBeDocumented272
11.2.4 使用@Repeatable标记可重复注解273
11.3 使用注解273
11.3.1 提取注解信息273
11.3.2 使用注解的示例274
11.4 Java注解与Kotlin的兼容性279
11.4.1 指定注解的作用目标279
11.4.2 使用Java注解281
11.5 本章小结282
第12章 Kotlin与Java互相调用283
12.1 Kotlin调用Java284
12.1.1 属性284
12.1.2 void和调用名为关键字的成员285
12.1.3 Kotlin的已映射类型286
12.1.4 Kotlin对Java泛型的转换287
12.1.5 对Java数组的处理287
12.1.6 调用参数个数可变的方法288
12.1.7 checked异常289
12.1.8 Object的处理289
12.1.9 访问静态成员290
12.1.10 SAM转换290
12.1.11 在Kotlin中使用JNI291
12.2 Java调用Kotlin291
12.2.1 属性291
12.2.2 包级函数292
12.2.3 实例变量294
12.2.4 类变量294
12.2.5 类方法296
12.2.6 访问控制符的对应关系297
12.2.7 获取KClass298
12.2.8 使用@JvmName解决签名冲突298
12.2.9 生成重载299
12.2.10 checked异常300
12.2.11 泛型的型变300
12.3 Kotlin反射302
12.3.1 类引用302
12.3.2 从KClass获取类信息303
12.3.3 创建对象306
12.3.4 构造器引用306
12.3.5 调用方法307
12.3.6 函数引用308
12.3.7 访问属性值309
12.3.8 属性引用311
12.3.9 绑定的方法与属性引用313
12.4 本章小结313
资源截图: