关键字与运算符
硬关键字
以下标记始终会被解释为关键字,不能用作标识符:
asas?用于安全类型转换。break终止循环的执行。class声明一个类。continue跳转到最近的外层循环的下一步。do开始一个 do/while 循环(带后置条件的循环)。else定义 if 表达式中条件为 false 时执行的分支。false指定 Boolean 类型的“假”值。for开始一个 for 循环。fun声明一个函数。if开始一个 if 表达式。in- 指定在 for 循环中迭代的对象。
- 用作中缀运算符以检查一个值是否属于一个区间、一个集合或另一个定义了
contains方法的实体。 - 在 when 表达式中用于相同目的。
- 将类型形参标记为逆变。
!in- 用作运算符以检查一个值是否不属于一个区间、一个集合或另一个定义了
contains方法的实体。 - 在 when 表达式中用于相同目的。
- 用作运算符以检查一个值是否不属于一个区间、一个集合或另一个定义了
interface声明一个接口。is- 检查一个值是否具有特定类型。
- 在 when 表达式中用于相同目的。
!is- 检查一个值是否不具有特定类型。
- 在 when 表达式中用于相同目的。
null是一个常量,表示不指向任何对象的对象引用。object同时声明一个类及其实例。package指定当前文件的软件包。return从最近的外层函数或匿名函数返回。superthisthrow抛出异常。true指定 Boolean 类型的“真”值。try开始一个异常处理块。typealias声明一个类型别名。typeof保留供未来使用。val声明一个只读属性或局部变量。var声明一个可变属性或局部变量。when开始一个 when 表达式(执行给定分支之一)。while开始一个 while 循环(带前置条件的循环)。
软关键字
以下标记在适用的上下文中充当关键字,在其他上下文中可用作标识符:
bycatch开始一个处理特定异常类型的块。constructor声明一个主构造函数或次构造函数。delegate用作注解使用处目标。dynamic在 Kotlin/JS 代码中引用一个 dynamic 类型。fieldfile用作注解使用处目标。finally开始一个当 try 块退出时总是会执行的块。get- 声明属性的 getter。
- 用作注解使用处目标。
import将另一个软件包中的声明导入到当前文件。init开始一个初始值设定项块。param用作注解使用处目标。property用作注解使用处目标。receiver用作注解使用处目标。set- 声明属性的 setter。
- 用作注解使用处目标。
setparam用作注解使用处目标。value与class关键字一起声明一个内联类。where指定泛型类型形参的约束。
修饰符关键字
以下标记在声明的修饰符列表中充当关键字,在其他上下文中可用作标识符:
abstract将类或成员标记为抽象。actual在多平台项目中表示平台特定的实现。annotation声明一个注解类。companion声明一个伴生对象。const将属性标记为编译时常量。crossinline禁止传递给内联函数的 lambda 表达式中的非局部返回。data指示编译器为类生成规范成员。enum声明一个枚举。expect将声明标记为平台特定,并期待在平台模块中有一个实现。external将声明标记为在 Kotlin 之外实现(通过 JNI 访问或在 JavaScript 中访问)。final禁止重写成员。infix允许使用中缀表示法调用函数。inline告诉编译器在调用处内联函数以及传递给它的 lambda 表达式。inner允许从嵌套类中引用外部类实例。internal将声明标记为在当前模块中可见。lateinit允许在构造函数之外初始化非 null 属性。noinline关闭对传递给内联函数的 lambda 表达式的内联。open允许继承类或重写成员。operator将函数标记为重载运算符或实现约定。out将类型形参标记为协变。override将成员标记为对父类成员的重写。private将声明标记为在当前类或文件中可见。protected将声明标记为在当前类及其子类中可见。public将声明标记为随处可见。reified将内联函数的类型形参标记为在运行时可访问。sealed声明一个密封类(限制继承的类)。suspend将函数或 lambda 表达式标记为挂起(可用作协程)。tailrec将函数标记为尾递归(允许编译器用迭代代替递归)。vararg允许为形参传递可变数量的实参。
特殊标识符
以下标识符由编译器在特定上下文中定义,在其他上下文中可用作常规标识符:
运算符与特殊符号
Kotlin 支持以下运算符和特殊符号:
+,-,*,/,%- 数学运算符*也用于将数组传递给 vararg 形参。
=- 赋值运算符。
- 用于指定形参的默认值。
+=,-=,*=,/=,%=- 复合赋值运算符。++,--- 递增与递减运算符。&&,||,!- 逻辑“与”、“或”、“非”运算符(对于位运算,请改用相应的中缀函数)。==,!=- 相等运算符(对于非基本类型,翻译为对equals()的调用)。===,!==- 引用相等运算符。<,>,<=,>=- 比较运算符(对于非基本类型,翻译为对compareTo()的调用)。[,]- 索引访问运算符(翻译为对get和set的调用)。!!断言一个表达式为非 null。?.执行安全调用(如果接收者非 null,则调用方法或访问属性)。?:如果左侧的值为 null,则取右侧的值(elvis 运算符)。::创建一个成员引用或类引用。..,..<创建区间。:在声明中将名称与类型隔开。?将类型标记为可为 null。->- 隔开 lambda 表达式的形参和主体。
- 在函数类型中隔开形参和返回值类型声明。
- 隔开 when 表达式分支的条件和主体。
@- 引入注解。
- 引入或引用循环标签。
- 引入或引用 lambda 标签。
- 引用来自外部作用域的 'this' 表达式。
- 引用外部父类。
;隔开同一行中的多个语句。${在字符串模板中引用变量或表达式。_- 在 lambda 表达式中替代未使用的形参。
- 在析构声明中替代未使用的形参。
有关运算符优先级,请参阅 Kotlin 语法中的此参考资料。