|
发表于 2024-11-5 13:54:58
|
显示全部楼层
本帖最后由 峥途 于 2024-11-5 13:56 编辑
Kotlin 学习笔记
1. 基础语法
1.1 变量声明
var: 可变变量
val: 不可变变量(类似于Java中的final)
类型推断: Kotlin支持类型推断,但也可以显式声明类型。
1.2 基本数据类型
数字类型: Int, Long, Short, Byte, Float, Double
字符类型: Char
布尔类型: Boolean
字符串类型: String
数组类型: Array
1.3 字符串模板
使用 $ 符号插入变量或表达式。
1.4 注释
单行注释: //
多行注释: /* ... */
2. 控制流
2.1 if 表达式
if 可以作为表达式返回值。
2.2 when 表达式
类似于Java中的 switch,但更强大。
支持多种匹配模式。
2.3 for 循环
遍历集合或范围。
2.4 while 循环
while 和 do-while 循环。
2.5 返回与跳转
return: 从函数返回。
break: 跳出循环。
continue: 跳过当前循环迭代。
3. 函数
3.1 函数声明
fun 关键字声明函数。
支持默认参数和命名参数。
3.2 单表达式函数
当函数体只有一行时,可以简化为单表达式。
3.3 高阶函数
函数可以作为参数或返回值。
3.4 匿名函数
使用 fun 关键字定义匿名函数。
3.5 Lambda 表达式
匿名函数的简写形式。
3.6 内联函数
inline 关键字用于优化高阶函数的性能。
3.7 扩展函数
为现有类添加新函数。
3.8 中缀函数
使用 infix 关键字定义中缀函数。
4. 类与对象
4.1 类声明
class 关键字声明类。
支持主构造函数和次构造函数。
4.2 属性
类中的变量称为属性。
支持自定义 getter 和 setter。
4.3 继承
使用 : 符号继承类。
默认类是 final,需要使用 open 关键字才能被继承。
4.4 接口
interface 关键字定义接口。
支持默认实现。
4.5 抽象类
abstract 关键字定义抽象类。
4.6 数据类
data 关键字定义数据类,自动生成 equals, hashCode, toString, copy 等方法。
4.7 嵌套类与内部类
嵌套类: 使用 class 关键字定义。
内部类: 使用 inner 关键字定义,可以访问外部类的成员。
4.8 对象声明
object 关键字定义单例对象。
4.9 伴生对象
companion object 关键字定义伴生对象,类似于Java中的静态成员。
4.10 密封类
sealed 关键字定义密封类,限制子类的范围。
5. 集合
5.1 集合类型
List: 有序集合,可重复元素。
Set: 无序集合,不可重复元素。
Map: 键值对集合,键不可重复。
5.2 集合操作
过滤: filter
映射: map
归约: reduce
排序: sorted
分组: groupBy
5.3 可变与不可变集合
List, Set, Map 默认是不可变的。
使用 MutableList, MutableSet, MutableMap 创建可变集合。
6. 异常处理
6.1 try-catch
捕获异常并处理。
6.2 try-catch-finally
finally 块中的代码无论是否抛出异常都会执行。
6.3 异常声明
使用 throws 关键字声明可能抛出的异常。
6.4 Nothing 类型
Nothing 类型表示函数永远不会返回。
7. 泛型
7.1 泛型类
使用 <T> 定义泛型类。
7.2 泛型函数
使用 <T> 定义泛型函数。
7.3 类型约束
使用 where 关键字定义类型约束。
7.4 协变与逆变
out 关键字用于协变。
in 关键字用于逆变。
7.5 星投影
使用 * 表示任意类型。
8. 注解
8.1 注解声明
annotation 关键字定义注解。
8.2 元注解
用于注解注解的注解。
8.3 注解使用
注解可以应用于类、函数、属性等。
9. 反射
9.1 反射API
使用 KClass, KFunction, KProperty 等类进行反射操作。
9.2 获取类信息
使用 ::class 获取类信息。
9.3 获取函数信息
使用 :: 获取函数信息。
9.4 获取属性信息
使用 :: 获取属性信息。
10. 协程
10.1 协程基础
suspend 关键字定义挂起函数。
CoroutineScope 定义协程的作用域。
10.2 协程构建器
launch: 启动一个新协程。
async: 启动一个新协程并返回 Deferred 对象。
10.3 协程上下文
CoroutineContext 定义协程的上下文。
10.4 协程调度器
Dispatchers 定义协程的调度器。
10.5 协程取消
Job 对象用于取消协程。
10.6 协程异常处理
try-catch 捕获协程中的异常。
11. 其他特性
11.1 运算符重载
使用 operator 关键字重载运算符。
11.2 委托
使用 by 关键字实现委托。
11.3 属性委托
使用 by 关键字实现属性委托。
11.4 内联类
inline 关键字定义内联类,优化内存使用。
11.5 类型别名
typealias 关键字定义类型别名。
11.6 作用域函数
let, run, with, apply, also 等作用域函数。
11.7 空安全
? 操作符用于处理可空类型。
!! 操作符用于非空断言。
11.8 类型检查与转换
is 关键字用于类型检查。
as 关键字用于类型转换。
11.9 多平台开发
Kotlin 支持多平台开发,包括 JVM, JS, Native 等。
12. 标准库
12.1 常用函数
apply, let, run, with, also 等。
12.2 集合操作
filter, map, reduce, sorted, groupBy 等。
12.3 字符串操作
substring, split, trim, replace 等。
12.4 数学操作
max, min, abs, sqrt 等。
12.5 日期与时间
LocalDate, LocalTime, LocalDateTime 等。
13. 与Java互操作
13.1 调用Java代码
Kotlin 可以直接调用Java代码。
13.2 调用Kotlin代码
Java 可以直接调用Kotlin代码。
13.3 互操作性问题
处理可空性、类型转换等问题。
14. 工具与环境
14.1 IDE支持
IntelliJ IDEA, Android Studio 等IDE支持Kotlin。
14.2 构建工具
Gradle, Maven 等构建工具支持Kotlin。
14.3 测试工具
JUnit, KotlinTest 等测试工具支持Kotlin。
14.4 文档生成
Dokka 等工具生成Kotlin文档。
15. 最佳实践
15.1 代码风格
遵循Kotlin代码风格指南。
15.2 性能优化
使用内联函数、内联类等优化性能。
15.3 可读性
使用扩展函数、作用域函数等提高代码可读性。
15.4 安全性
使用空安全、类型检查等提高代码安全性。
15.5 模块化
使用模块化设计提高代码的可维护性。
这份笔记涵盖了Kotlin的几乎所有语法细节,从基础语法到高级特性,再到与Java的互操作性和最佳实践。希望这份笔记能帮助你全面掌握Kotlin。 |
|