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 语言核心语法规则。

相关推荐
消失的旧时光-194320 小时前
Android ble理解
java·kotlin
studyForMokey1 天前
【Android Activity】生命周期深入理解
android·kotlin
来来走走1 天前
kotlin学习 lambda编程
android·学习·kotlin
Huang兄1 天前
kotlin协程-基础概念篇
kotlin
无知的前端1 天前
一文精通-Kotlin中双冒号:: 语法使用
android·kotlin
Huang兄1 天前
kotlin协程-基础设施篇-协程创建与启动:SafeContinuation
kotlin
Merrick1 天前
从 Java 到 Kotlin 的入门学习
kotlin
阿健君1 天前
Java/Kotlin 泛型
kotlin
来来走走1 天前
kotlin学习 基础知识一览
android·开发语言·kotlin