一、關(guān)鍵字與操作符
硬關(guān)鍵字
以下符號會始終解釋為關(guān)鍵字,不能用作標(biāo)識符:
-
as -
as?用于安全類型轉(zhuǎn)換 -
break終止循環(huán)的執(zhí)行 -
class聲明一個類 -
continue繼續(xù)最近層循環(huán)的下一步 -
do開始一個 do/while 循環(huán)(后置條件的循環(huán)) -
else定義一個 if 表達(dá)式條件為 false 時執(zhí)行的分支 -
false指定布爾類型的“假”值 -
for開始一個 for 循環(huán) -
fun聲明一個函數(shù) -
if開始一個 if 表達(dá)式 -
in- 指定在 for 循環(huán)中迭代的對象
- 用作中綴操作符以檢測一個值屬于一個區(qū)間、 一個集合或者其他定義“contains”方法的實體
- 在 when 表達(dá)式中用于上述目的
- 將一個類型參數(shù)標(biāo)記為逆變
-
!in- 用作中綴操作符以檢測一個值不屬于一個區(qū)間、 一個集合或者其他定義“contains”方法的實體
- 在 when 表達(dá)式中用于上述目的
-
interface聲明一個接口 -
is- 檢測一個值具有指定類型
- 在 when 表達(dá)式中用于上述目的
-
!is- 檢測一個值不具有指定類型
- 在 when 表達(dá)式中用于上述目的
-
null是表示不指向任何對象的對象引用的常量 -
object同時聲明一個類及其實例 -
package指定當(dāng)前文件的包 -
return從最近層的函數(shù)或匿名函數(shù)返回 -
super -
this -
throw拋出一個異常 -
true指定布爾類型的“真”值 -
try開始一個異常處理塊 -
typealias聲明一個類型別名 -
typeof保留以供未來使用 -
val聲明一個只讀屬性或局部變量 -
var聲明一個可變屬性或局部變量 -
when開始一個 when 表達(dá)式(執(zhí)行其中一個給定分支) -
while開始一個 while 循環(huán)(前置條件的循環(huán))
二、軟關(guān)鍵字
以下符號在適用的上下文中充當(dāng)關(guān)鍵字,而在其他上下文中可用作標(biāo)識符:
-
by -
catch開始一個處理指定異常類型的塊 -
constructor聲明一個主構(gòu)造函數(shù)或次構(gòu)造函數(shù) -
delegate用作注解使用處目標(biāo) -
dynamic引用一個 Kotlin/JS 代碼中的動態(tài)類型 -
field用作注解使用處目標(biāo) -
file用作注解使用處目標(biāo) -
finally開始一個當(dāng) try 塊退出時總會執(zhí)行的塊 -
get -
import將另一個包中的聲明導(dǎo)入當(dāng)前文件 -
init開始一個初始化塊 -
param用作注解使用處目標(biāo) -
property用作注解使用處目標(biāo) -
receiver用作注解使用處目標(biāo) -
set -
setparam用作注解使用處目標(biāo) -
where指定泛型類型參數(shù)的約束
三、修飾符關(guān)鍵字
以下符號作為聲明中修飾符列表中的關(guān)鍵字,并可用作其他上下文中的標(biāo)識符:
-
actual表示多平臺項目中的一個平臺相關(guān)實現(xiàn) -
abstract將一個類或成員標(biāo)記為抽象 -
annotation聲明一個注解類 -
companion聲明一個伴生對象 -
const將屬性標(biāo)記為編譯期常量 -
crossinline禁止傳遞給內(nèi)聯(lián)函數(shù)的 lambda 中的非局部返回 -
data指示編譯器為類生成典型成員 -
enum聲明一個枚舉 -
expect將一個聲明標(biāo)記為平臺相關(guān),并期待在平臺模塊中實現(xiàn)。 -
external將一個聲明標(biāo)記為不是在 Kotlin 中實現(xiàn)(通過 JNI 訪問或者在 JavaScript 中實現(xiàn)) -
final禁止成員覆蓋 -
infix允許以中綴表示法調(diào)用函數(shù) -
inline告訴編譯器在調(diào)用處內(nèi)聯(lián)傳給它的函數(shù)和 lambda 表達(dá)式 -
inner允許在嵌套類中引用外部類實例 -
internal將一個聲明標(biāo)記為在當(dāng)前模塊中可見 -
lateinit允許在構(gòu)造函數(shù)之外初始化非空屬性 -
noinline關(guān)閉傳給內(nèi)聯(lián)函數(shù)的 lambda 表達(dá)式的內(nèi)聯(lián) -
open允許一個類子類化或覆蓋成員 -
operator將一個函數(shù)標(biāo)記為重載一個操作符或者實現(xiàn)一個約定 -
out將類型參數(shù)標(biāo)記為協(xié)變 -
override將一個成員標(biāo)記為超類成員的覆蓋 -
private將一個聲明標(biāo)記為在當(dāng)前類或文件中可見 -
protected將一個聲明標(biāo)記為在當(dāng)前類及其子類中可見 -
public將一個聲明標(biāo)記為在任何地方可見 -
reified將內(nèi)聯(lián)函數(shù)的類型參數(shù)標(biāo)記為在運行時可訪問 -
sealed聲明一個密封類(限制子類化的類) -
suspend將一個函數(shù)或 lambda 表達(dá)式標(biāo)記為掛起式(可用做協(xié)程) -
tailrec將一個函數(shù)標(biāo)記為尾遞歸(允許編譯器將遞歸替換為迭代) -
vararg允許一個參數(shù)傳入可變數(shù)量的參數(shù)
特殊標(biāo)識符
以下標(biāo)識符由編譯器在指定上下文中定義,并且可以用作其他上下文中的常規(guī)標(biāo)識符:
-
field用在屬性訪問器內(nèi)部來引用該屬性的幕后字段 -
it用在 lambda 表達(dá)式內(nèi)部來隱式引用其參數(shù)
操作符和特殊符號
Kotlin 支持以下操作符和特殊符號:
-
+、-、*、/、%—— 數(shù)學(xué)操作符 -
=- 賦值操作符
- 也用于指定參數(shù)的默認(rèn)值
-
+=、-=、*=、/=、%=—— 廣義賦值操作符 -
++、--—— 遞增與遞減操作符 -
&&、||、!—— 邏輯“與”、“或”、“非”操作符(對于位運算,請使用相應(yīng)的中綴函數(shù)) -
==、!=—— 相等操作符(對于非原生類型會翻譯為調(diào)用equals()) -
===、!==—— 引用相等操作符 -
<、>、<=、>=—— 比較操作符(對于非原生類型會翻譯為調(diào)用compareTo()) -
[、]—— 索引訪問操作符(會翻譯為調(diào)用get與set) -
!!斷言一個表達(dá)式非空 -
?.執(zhí)行安全調(diào)用(如果接收者非空,就調(diào)用一個方法或訪問一個屬性) -
?:如果左側(cè)的值為空,就取右側(cè)的值(elvis 操作符) -
::創(chuàng)建一個成員引用或者一個類引用 -
..創(chuàng)建一個區(qū)間 -
:分隔聲明中的名稱與類型 -
?將類型標(biāo)記為可空 -
->- 分隔 lambda 表達(dá)式的參數(shù)與主體
- 分隔在函數(shù)類型中的參數(shù)類型與返回類型聲明
- 分隔 when 表達(dá)式分支的條件與代碼體
-
@- 引入一個注解
- 引入或引用一個循環(huán)標(biāo)簽
- 引入或引用一個 lambda 表達(dá)式標(biāo)簽
- 引用一個來自外部作用域的 “this”表達(dá)式
- 引用一個外部超類
-
;分隔位于同一行的多個語句 -
$在字符串模版中引用變量或者表達(dá)式 -
_- 在 lambda 表達(dá)式中代替未使用的參數(shù)
- 在解構(gòu)聲明中代替未使用的參數(shù)