当前位置: 首页 > news >正文

总结 kotlin中的关键字和常用方法

Kotlin 的关键字分为 硬关键字(Hard Keywords)软关键字(Soft Keywords)修饰符关键字(Modifier Keywords)。以下是分类整理的关键字列表及其核心用途:


1. 硬关键字(Hard Keywords)

这些关键字在 Kotlin 中严格保留,不能作为标识符(如变量名、函数名等)。

关键字用途
as类型转换或别名(如 import com.example.User as MyUser
break跳出循环
class定义类
continue跳过当前循环迭代
do用于 do-while 循环
elseif 条件分支
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)

注意事项

  1. 硬关键字不可用作标识符,如命名变量为 val 会导致编译错误。
  2. 软关键字在特定上下文外可用作标识符,例如:
    val import = 10  // 合法,因为 `import` 是软关键字
    
  3. 修饰符关键字需结合上下文使用,例如 open 仅用于类或成员。

以下是 Kotlin 中常用的核心方法及其典型使用场景,涵盖集合操作、字符串处理、作用域函数等高频功能:


一、集合操作常用方法

1. 转换与过滤

map: 对集合元素进行转换。

val numbers = listOf(1, 2, 3)
val squared = numbers.map { it * it } // [1, 4, 9]

filter: 过滤符合条件的元素。

val evenNumbers = numbers.filter { it % 2 == 0 } // [2]

flatMap: 将集合展平。

val list = listOf("Hello", "World")
val chars = list.flatMap { it.toList() } // [H, e, l, l, o, W, o, r, l, d]
2. 聚合与统计

sum / average: 计算总和或平均值。

val total = numbers.sum() // 6
val avg = numbers.average() // 2.0

groupBy: 按条件分组。

val words = listOf("apple", "banana", "cherry")
val byLength = words.groupBy { it.length } // {5=["apple"], 6=["banana", "cherry"]}
3. 查找与判断

first / last: 获取首个或最后一个元素(可带条件)。

val firstEven = numbers.first { it % 2 == 0 } // 2

any / all: 判断是否存在或全部满足条件。

val hasNegative = numbers.any { it < 0 } // false
val allPositive = numbers.all { it > 0 } // true

二、字符串处理常用方法

1. 分割与连接

split: 按分隔符分割字符串。

val str = "a,b,c"
val parts = str.split(",") // ["a", "b", "c"]

joinToString: 将集合转换为字符串。

val joined = listOf(1, 2, 3).joinToString("-") // "1-2-3"
2. 截取与替换

substring: 截取子串。

val sub = "Kotlin".substring(0, 3) // "Kot"

replace: 替换字符或正则匹配内容。

val newStr = "123abc".replace(Regex("\\d"), "X") // "XXXabc"
3. 判断与转换

isBlank / isNotBlank: 判断字符串是否为空或空白。

val isEmpty = "   ".isBlank() // true

toInt / toDoubleOrNull: 安全转换数字。

val num = "123".toInt() // 123
val numOrNull = "12.3".toDoubleOrNull() // 12.3 或 null

三、作用域函数(Scoping Functions)

1. 链式操作

let: 对对象执行操作并返回结果。

val length = "Kotlin".let { it.length } // 6

also: 执行副作用操作后返回原对象。

val list = mutableListOf(1).also { it.add(2) } // [1, 2]
2. 对象初始化

apply: 配置对象属性后返回自身。

val button = Button().apply {
  text = "Click"
  onClick { /* 点击事件 */ }
}

run: 结合对象操作与返回值。

val result = "Hello".run {
  length + substring(0, 2).length // 6 + 2 = 8
}
3. 空安全处理

?.let: 安全调用避免空指针。

val nullableStr: String? = null
nullableStr?.let { println(it) } // 不会执行

四、其他高频工具方法

1. 类型检查与转换

is / !is: 类型检查。

if (obj is String) println(obj.length)

as?: 安全类型转换。

val str: String? = obj as? String
2. 范围操作

in / !in: 判断元素是否在范围或集合中。

if (index in 0..list.lastIndex) { /* 安全访问 */ }
3. 延迟与缓存

lazy: 惰性初始化属性。

val heavyData: String by lazy { loadData() }

五、实用扩展函数

1. 集合扩展

takeIf / takeUnless: 按条件返回对象或 null

val even = numbers.takeIf { it.all { num -> num % 2 == 0 } }
2. 空安全处理

orEmpty: 将可空集合转为非空。

val safeList: List<String> = nullableList.orEmpty()
3. 数字处理

coerceIn: 限制数值在指定范围内。

val clamped = 15.coerceIn(0, 10) // 10

总结

Kotlin 的常用方法聚焦于 简洁性安全性,通过标准库和扩展函数大幅简化代码逻辑。掌握这些方法可以高效处理集合、字符串、空安全等常见场景,提升开发效率。

相关文章:

  • 深入理解 JSON.stringify:优雅输出 JSON 数据
  • 机器人曲面跟踪Surface-Tracking
  • Python---文件操作
  • Leetcode 160 Intersection of Two Linked Lists
  • python+flask实现360全景图和stl等多种格式模型浏览
  • taro-vue2 如何使用国密加解密
  • stm32第六天继电器
  • CentOS配置永久静态IP
  • 3D点云目标检测——KITTI数据集读取与处理
  • 电脑管家如何清理内存及垃圾,提升电脑性能
  • 蓝桥杯数字接龙dfs
  • 【Linux】Linux系统上大文件的分割与合并
  • Linux中find 命令的高级用法 组合条件 与、或、非(-a、-o、!) 以及通过 -regex 和 -iregex 选项使用正则表达式
  • Android Vulkan 官宣转正并统一渲染堆栈 ,这对 Flutter 又有什么影响?
  • 【Python】11、函数-01
  • OpenCV图像处理:分割、合并、打码、组合与边界填充
  • VS Code + Git 分支操作指南(附流程图)
  • 基于Redis实现共享token登录
  • pytorch小记(十四):pytorch中 nn.Embedding 详解
  • 机器学习之梯度消失和梯度爆炸
  • 海尔智家一季度营收791亿元:净利润增长15%,海外市场收入增超12%
  • “即买即退”扩容提质,上海静安推出离境退税2.0版新政
  • 招行一季度净利372.86亿降2.08%,营收降逾3%
  • 人社部:将制定提前领取个人养老金相关办法
  • A股三大股指小幅低收:电力股大幅调整,两市成交10221亿元
  • 秦洪看盘|浮现新预期,存量资金积极调仓