Kotlin 的关键字分为 硬关键字(Hard Keywords)、软关键字(Soft Keywords) 和 修饰符关键字(Modifier Keywords)。以下是分类整理的关键字列表及其核心用途:
1. 硬关键字(Hard Keywords)
这些关键字在 Kotlin 中严格保留,不能作为标识符(如变量名、函数名等)。
关键字 | 用途 |
---|---|
as | 类型转换或别名(如 import com.example.User as MyUser ) |
break | 跳出循环 |
class | 定义类 |
continue | 跳过当前循环迭代 |
do | 用于 do-while 循环 |
else | if 条件分支 |
false | 布尔值假 |
for | 循环 |
fun | 定义函数 |
if | 条件判断 |
in | 检查元素是否在集合中,或用于循环迭代(如 for (i in 1..10) ) |
!in | 检查元素不在集合中 |
interface | 定义接口 |
is | 类型检查(如 if (obj is String) ) |
!is | 否定类型检查 |
null | 空值 |
object | 定义单例对象或匿名对象 |
package | 声明包 |
return | 从函数返回 |
super | 调用父类方法或构造函数 |
this | 当前对象引用 |
throw | 抛出异常 |
true | 布尔值真 |
try | 异常捕获 |
typealias | 定义类型别名(如 typealias FileTable = Map<String, File> ) |
val | 声明不可变变量(只读) |
var | 声明可变变量 |
when | 多条件分支(类似 switch ) |
while | 循环 |
2. 软关键字(Soft Keywords)
在特定上下文中有特殊含义,其他情况下可作为标识符。
关键字 | 典型场景 |
---|---|
by | 委托模式(如 class MyList<T> : List<T> by ArrayList<T>() ) |
catch | 异常捕获块(try { ... } catch (e: Exception) { ... } ) |
constructor | 声明构造函数 |
delegate | 委托属性(通常与 by 一起使用) |
dynamic | 标记动态类型(用于与 JavaScript 互操作) |
field | 在属性访问器中引用幕后字段(如 var x: Int = 0; get() = field ) |
file | 注解目标为文件(如 @file:JvmName("MyUtils") ) |
finally | 异常处理的最终块 |
get | 自定义属性的 getter |
import | 导入包或类 |
init | 初始化块(在类中执行初始化代码) |
param | 注解目标为构造函数参数 |
property | 注解目标为属性 |
receiver | 扩展函数或属性的接收者 |
set | 自定义属性的 setter |
setparam | 注解目标为属性 setter 的参数 |
where | 泛型约束(如 fun <T> copyWhenGreater(list: T, threshold: T) where T : Comparable<T> ) |
3. 修饰符关键字(Modifier Keywords)
用于修饰类、函数、属性等的特性。
关键字 | 用途 |
---|---|
abstract | 抽象类或抽象方法 |
actual | 多平台项目(MPP)中标记平台具体实现 |
annotation | 定义注解类 |
companion | 定义伴生对象 |
const | 声明编译时常量(如 const val PI = 3.14 ) |
data | 标记数据类(自动生成 equals() 、toString() 等) |
enum | 定义枚举类 |
expect | 多平台项目中声明预期声明(跨平台公共 API) |
external | 标记外部声明(如 JNI 方法) |
final | 禁止类或成员被继承或覆盖(默认隐含,可省略) |
infix | 标记中缀函数(如 a to b ) |
inline | 内联函数(优化高阶函数性能) |
inner | 定义内部类(可访问外部类成员) |
internal | 模块内可见 |
lateinit | 延迟初始化非空属性 |
noinline | 禁止内联 lambda 参数 |
open | 允许类或成员被继承或覆盖 |
operator | 标记运算符重载函数 |
out | 泛型协变(如 interface Source<out T> ) |
override | 覆盖父类或接口的成员 |
private | 私有可见性(仅在声明范围内可见) |
protected | 保护可见性(子类可见) |
public | 公共可见性(默认修饰符) |
reified | 具体化的泛型(内联函数中可访问泛型类型) |
sealed | 定义密封类(限制子类范围) |
suspend | 标记挂起函数(协程) |
tailrec | 标记尾递归函数(编译器优化为循环) |
vararg | 可变数量参数(如 fun sum(vararg numbers: Int) ) |
注意事项
- 硬关键字不可用作标识符,如命名变量为
val
会导致编译错误。 - 软关键字在特定上下文外可用作标识符,例如:
kotlin">val import = 10 // 合法,因为 `import` 是软关键字
- 修饰符关键字需结合上下文使用,例如
open
仅用于类或成员。
以下是 Kotlin 中常用的核心方法及其典型使用场景,涵盖集合操作、字符串处理、作用域函数等高频功能:
一、集合操作常用方法
1. 转换与过滤
• map
: 对集合元素进行转换。
kotlin">val numbers = listOf(1, 2, 3)
val squared = numbers.map { it * it } // [1, 4, 9]
• filter
: 过滤符合条件的元素。
kotlin">val evenNumbers = numbers.filter { it % 2 == 0 } // [2]
• flatMap
: 将集合展平。
kotlin">val list = listOf("Hello", "World")
val chars = list.flatMap { it.toList() } // [H, e, l, l, o, W, o, r, l, d]
2. 聚合与统计
• sum
/ average
: 计算总和或平均值。
kotlin">val total = numbers.sum() // 6
val avg = numbers.average() // 2.0
• groupBy
: 按条件分组。
kotlin">val words = listOf("apple", "banana", "cherry")
val byLength = words.groupBy { it.length } // {5=["apple"], 6=["banana", "cherry"]}
3. 查找与判断
• first
/ last
: 获取首个或最后一个元素(可带条件)。
kotlin">val firstEven = numbers.first { it % 2 == 0 } // 2
• any
/ all
: 判断是否存在或全部满足条件。
kotlin">val hasNegative = numbers.any { it < 0 } // false
val allPositive = numbers.all { it > 0 } // true
二、字符串处理常用方法
1. 分割与连接
• split
: 按分隔符分割字符串。
kotlin">val str = "a,b,c"
val parts = str.split(",") // ["a", "b", "c"]
• joinToString
: 将集合转换为字符串。
kotlin">val joined = listOf(1, 2, 3).joinToString("-") // "1-2-3"
2. 截取与替换
• substring
: 截取子串。
kotlin">val sub = "Kotlin".substring(0, 3) // "Kot"
• replace
: 替换字符或正则匹配内容。
kotlin">val newStr = "123abc".replace(Regex("\\d"), "X") // "XXXabc"
3. 判断与转换
• isBlank
/ isNotBlank
: 判断字符串是否为空或空白。
kotlin">val isEmpty = " ".isBlank() // true
• toInt
/ toDoubleOrNull
: 安全转换数字。
kotlin">val num = "123".toInt() // 123
val numOrNull = "12.3".toDoubleOrNull() // 12.3 或 null
三、作用域函数(Scoping Functions)
1. 链式操作
• let
: 对对象执行操作并返回结果。
kotlin">val length = "Kotlin".let { it.length } // 6
• also
: 执行副作用操作后返回原对象。
kotlin">val list = mutableListOf(1).also { it.add(2) } // [1, 2]
2. 对象初始化
• apply
: 配置对象属性后返回自身。
kotlin">val button = Button().apply {text = "Click"onClick { /* 点击事件 */ }
}
• run
: 结合对象操作与返回值。
kotlin">val result = "Hello".run {length + substring(0, 2).length // 6 + 2 = 8
}
3. 空安全处理
• ?.let
: 安全调用避免空指针。
kotlin">val nullableStr: String? = null
nullableStr?.let { println(it) } // 不会执行
四、其他高频工具方法
1. 类型检查与转换
• is
/ !is
: 类型检查。
kotlin">if (obj is String) println(obj.length)
• as?
: 安全类型转换。
kotlin">val str: String? = obj as? String
2. 范围操作
• in
/ !in
: 判断元素是否在范围或集合中。
kotlin">if (index in 0..list.lastIndex) { /* 安全访问 */ }
3. 延迟与缓存
• lazy
: 惰性初始化属性。
kotlin">val heavyData: String by lazy { loadData() }
五、实用扩展函数
1. 集合扩展
• takeIf
/ takeUnless
: 按条件返回对象或 null
。
kotlin">val even = numbers.takeIf { it.all { num -> num % 2 == 0 } }
2. 空安全处理
• orEmpty
: 将可空集合转为非空。
kotlin">val safeList: List<String> = nullableList.orEmpty()
3. 数字处理
• coerceIn
: 限制数值在指定范围内。
kotlin">val clamped = 15.coerceIn(0, 10) // 10
总结
Kotlin 的常用方法聚焦于 简洁性 和 安全性,通过标准库和扩展函数大幅简化代码逻辑。掌握这些方法可以高效处理集合、字符串、空安全等常见场景,提升开发效率。