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

embedded/2025/3/19 8:41:37/

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. 软关键字在特定上下文外可用作标识符,例如:
    kotlin">val import = 10  // 合法,因为 `import` 是软关键字
    
  3. 修饰符关键字需结合上下文使用,例如 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 的常用方法聚焦于 简洁性安全性,通过标准库和扩展函数大幅简化代码逻辑。掌握这些方法可以高效处理集合、字符串、空安全等常见场景,提升开发效率。


http://www.ppmy.cn/embedded/173808.html

相关文章

【数据库】如何用索引优化查询性能

引言 在数据库查询中&#xff0c;索引是提升性能的关键工具。合理使用索引可以显著减少数据扫描量&#xff0c;加快查询速度。然而&#xff0c;索引的使用也需要谨慎&#xff0c;错误的索引策略可能导致性能下降甚至系统崩溃。本文将深入探讨如何通过索引优化查询性能&#xf…

函数(函数的概念、库函数、自定义函数、形参和实参、return语句、数组做函数参数、嵌套调用和链式访问、函数的声明和定义、static和extern)

一、函数的概念 •C语⾔中的函数&#xff1a;⼀个完成某项特定的任务的⼀⼩段代码 •函数又被翻译为子函数&#xff08;更准确&#xff09; •在C语⾔中我们⼀般会⻅到两类函数&#xff1a;库函数 ⾃定义函数 二、库函数 1 .标准库和头文件 •C语⾔的国际标准ANSIC规定了⼀…

硬件设计抽象级别详解:门级、RTL级、行为级与HLS

硬件设计抽象级别详解&#xff1a;门级、RTL级、行为级与HLS 引言 在数字系统设计领域&#xff0c;硬件描述语言(HDL)提供了多种抽象级别来描述电路功能和结构。从最底层的门级描述到高层的行为级描述&#xff0c;每一种抽象级别都有其特定的用途和优势。理解这些不同级别以及…

Trae AI 能力:开启跨系统开发新时代,让远程协作与定制化开发触手可及

目录 前言 Trae 国内版&#xff1a;AI 原生 IDE 的新突破 1. Builder 模式&#xff1a;从自然语言到代码的“零摩擦”开发 2. 上下文深度感知&#xff1a;更懂代码的智能伙伴 3. 实时代码智能补全&#xff1a;让编码速度“质变” 4. AI 协作&#xff1a;跨模块开发与实时…

Z 轴热膨胀系数:PCB 可靠性的关键因素与选材策略

在电子设备小型化与高性能化的趋势下&#xff0c;PCB&#xff08;印刷电路板&#xff09;的可靠性成为决定产品寿命的核心因素。其中&#xff0c;Z 轴热膨胀系数&#xff08;α2/z-CTE&#xff09;作为板材的关键参数&#xff0c;直接影响多层板的层间结合力、焊点稳定性及整体…

PostgreSQL的学习心得和知识总结(一百七十一)|深入理解PostgreSQL数据库之 外连接消除 的使用和实现

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

Android Fresco 框架工具与测试模块源码深度剖析(五)

一、引言 在 Android 开发中&#xff0c;Fresco 是一个强大的图片加载和显示框架&#xff0c;由 Facebook 开源。它不仅提供了高效的图片加载和缓存机制&#xff0c;还配备了丰富的工具与测试模块&#xff0c;这些模块对于开发者在调试、优化以及确保框架的正确性方面起着至关…

蓝桥杯刷题周计划(第三周)

目录 前言题目一题目代码题解分析 题目二题目代码题解分析 题目三题目代码题解分析 题目四题目代码题解分析 题目五题目代码题解分析 题目六题目代码题解分析 题目七题目代码题解分析 题目八题目代码题解分析 题目九题目代码题解分析 题目十题目代码题解分析 前言 大家好&#…