Kotlin 全量关键字全面整理,并附上简洁示例,确保每一个关键字都清楚易懂。

Kotlin 的关键字体系是学习 Kotlin 的核心内容,掌握它们不仅能避免编译错误,还能写出高效、可维护的代码。本文按照官方分类,将 硬关键字、软关键字、修饰符关键字 全面整理,并附上简洁示例,确保每一个关键字都清楚易懂。


一、硬关键字(始终为关键字,不可作标识符)

硬关键字在 Kotlin 中无条件保留,不能用作变量名、函数名或类名

关键字 核心用途 示例代码
as 强制类型转换(失败抛异常);导入时指定类/函数别名 val num = anyObj as Int import java.util.Date as JavaDate
as? 安全类型转换(失败返回 null) val str = anyObj as? String ?: "默认值"
break 终止当前循环 for(i in 1..5){ if(i==3) break } loop@ for(i in 1..3){ break@loop }
class 声明类 class Person(val name: String){ fun sayHello() = println("Hi") }
continue 跳过当前循环迭代 for(i in 1..5){ if(i==3) continue; println(i) }
do 后置条件循环(至少执行一次) var j=0; do{ println(j); j++ } while(j<2)
else 条件不满足时执行分支 val max = if(a>b) a else b when(num){1->"一"; else->"其他"}
false 布尔"假"值 val isFail = false; if(!isFail) println("成功")
for 循环迭代 for(i in 1..5) println(i) for((idx,item) in list.withIndex()) {}
fun 声明函数 fun add(a:Int,b:Int):Int=a+b fun printMsg()=println("Hello")
if 条件表达式,可返回值 val result = if(score>=60) "及格" else "不及格"
in 判断是否在区间/集合内,或泛型逆变 for(item in list){} if(5 in 1..10){} class Box<in T>
!in 判断不在区间/集合内 if(3 !in 5..10) println("不在区间")
interface 声明接口 interface Flyable{ fun fly() } class Bird:Flyable{ override fun fly(){} }
is 类型检查 val value:Any="Kotlin"; if(value is String) println(value.length)
!is 类型反向检查 if(value !is Int) println("不是整数")
null 空引用常量 val s:String?=null val n:Int?=null
object 单例类、伴生对象、匿名对象 object Singleton{ val app="Kotlin" } class A{ companion object{} }
package 指定文件包 package com.example.kotlin.keywords
return 函数返回 fun sub(a:Int,b:Int):Int{return a-b}
super 父类引用 class Dog:Animal(){ override fun eat(){ super.eat() } }
this 当前对象引用 class Person(val name:String){ fun intro()=println("我是$this.name") }
throw 抛出异常 fun checkAge(age:Int){ if(age<0) throw IllegalArgumentException("年龄非法") }
true 布尔"真"值 val isSuccess=true; if(isSuccess) println("完成")
try 异常处理块 try{10/0} catch(e:ArithmeticException){println(e.message)}
typealias 类型别名 typealias StringList=List<String>
val 只读变量 val age=25
var 可变变量 var count=0; count+=1
when 条件分支表达式 val grade = when(score){100->"满分"; in 90..99->"优秀"; else->"及格"}
while 前置条件循环 var i=0; while(i<3){ println(i); i++ }

二、软关键字(上下文敏感,可作标识符)

软关键字在特定语法场景中才被识别,其它场景可作变量名或函数名。

关键字 核心用途 示例代码
by 委托接口/属性 class User(p:Printer):Printer by p var name:String by Delegate()
catch 捕获异常 try{10/0} catch(e:ArithmeticException){println("除零异常")}
constructor 主/次构造函数 class Car constructor(val brand:String)
delegate 注解使用目标 @delegate:MyAnnotation val name:String by Delegate()
dynamic Kotlin/JS 动态类型 val jsObj:dynamic=js("{}"); jsObj.name="Kotlin"
field 注解目标/属性幕后字段 @field:Nullable var age:Int=0
file 注解目标/整个文件 @file:JvmName("MyFile") package com.example
finally try/catch退出执行块 try{} finally{ file.close() }
get 属性getter var isAdult:Boolean get() = age>=18
import 导入包 import java.util.ArrayList
init 初始化块 class Person(val name:String){ init{ println("初始化:$name") } }
param 注解目标/参数 fun test(@param:NotNull name:String){}
property 注解目标/属性 @property:Deprecated var age:Int=0
receiver 注解目标/扩展接收者 fun @receiver:NotNull String.printLen()=println(length)
set 属性setter var score:Int set(value){ field=if(value in 0..100) value else 0 }
setparam 注解目标/setter参数 var age:Int set(@setparam:Min(0) value){ field=value }
where 泛型约束 fun<T> printInfo(t:T) where T:CharSequence,T:Comparable<T>{ println(t.length) }

三、修饰符关键字(声明修饰符,其他场景可作标识符)

修饰符关键字用于类、函数、属性的修饰。

关键字 核心用途 示例代码
actual 多平台实际实现 expect fun getPlatform():String; actual fun getPlatform()="Android"
abstract 抽象类/成员 abstract class Shape{ abstract fun area():Double }
annotation 注解类 @Target(AnnotationTarget.CLASS) annotation class MyAnnotation
companion 类伴生对象 class A{ companion object{ val info="伴生"; fun show()=println(info) } }
const 编译期常量 const val MAX=100
crossinline 内联函数禁止非局部返回 inline fun test(crossinline action:()->Unit){ action() }
data 数据类 data class User(val id:Int,val name:String)
enum 枚举类 enum class Season{ SPRING,SUMMER }
expect 多平台声明 expect class PlatformFile(path:String)
external 非 Kotlin 实现 external fun callJs():String
final 禁止继承或覆盖 final class FinalClass{ final fun noOverride(){} }
infix 中缀函数 infix fun Int.add(n:Int)=this+n
inline 内联函数 inline fun measureTime(action:()->Unit){ action() }
inner 内部类 class Outer{ inner class Inner{} }
internal 模块可见性 internal class Module{ internal fun f(){} }
lateinit 延迟初始化var属性 lateinit var email:String
noinline 内联函数中不内联的lambda inline fun test(inlineAction:()->Unit,noinline noInlineAction:()->Unit){}
open 允许继承/覆盖 open class Animal{ open fun eat(){} }
operator 操作符重载 operator fun plus(p:Point)=Point(x+p.x)
out 泛型协变 class Box<out T>(val data:T)
override 重写父类/接口 override fun eat()=println("吃")
private 私有可见性 private val PWD="123456"
protected 受保护可见性 protected val secret="秘"
public 公开可见性 public class PublicClass{ public fun pubFun(){} }
reified 实化内联泛型 inline fun <reified T> isType(v:Any)=v is T
sealed 密封类 sealed class Result; class Success:Result()
suspend 挂起函数 suspend fun fetch():String{ return "data" }
tailrec 尾递归 tailrec fun factorial(n:Int,r:Int=1):Int{ if(n<=1) return r; return factorial(n-1,n*r) }
vararg 可变参数 fun sum(vararg nums:Int):Int=nums.sum()

总结

Kotlin 全量关键字终极对照表,77 个关键字一览无余:

  • 硬关键字 28 个:不可作标识符
  • 软关键字 17 个:上下文敏感
  • 修饰符关键字 32 个:声明修饰符

每个关键字都附有精准示例,可直接运行。掌握这些关键字,你就真正掌握了 Kotlin 语言核心语法规则。

相关推荐
Kapaseker1 天前
实战 Compose 中的 IntrinsicSize
android·kotlin
A0微声z3 天前
Kotlin Multiplatform (KMP) 中使用 Protobuf
kotlin
alexhilton4 天前
使用FunctionGemma进行设备端函数调用
android·kotlin·android jetpack
lhDream4 天前
Kotlin 开发者必看!JetBrains 开源 LLM 框架 Koog 快速上手指南(含示例)
kotlin
RdoZam4 天前
Android-封装基类Activity\Fragment,从0到1记录
android·kotlin
Kapaseker4 天前
研究表明,开发者对Kotlin集合的了解不到 20%
android·kotlin
糖猫猫cc5 天前
Kite:两种方式实现动态表名
java·kotlin·orm·kite
如此风景5 天前
kotlin协程学习小计
android·kotlin
Kapaseker5 天前
你搞得懂这 15 个 Android 架构问题吗
android·kotlin
zh_xuan5 天前
kotlin 高阶函数用法
开发语言·kotlin