關鍵字與運算子
硬關鍵字
以下標記總是會被解釋為關鍵字,並且不能用作識別符號:
asas?用於安全型別轉換。break終止迴圈的執行。class宣告一個類別。continue跳到最近封閉迴圈的下一個步驟。do開始一個 do/while 迴圈(帶有後置條件的迴圈)。else定義當條件為假時執行的if 表達式分支。false指定Boolean 型別的 'false' 值。for開始一個 for 迴圈。fun宣告一個函式。if開始一個 if 表達式。in- 在for 迴圈中指定正在迭代的物件。
- 作為中綴運算子用於檢查值是否屬於一個範圍、一個集合或定義了 'contains' 方法的其他實體。
- 在when 表達式中用於相同的目的。
- 將型別參數標記為逆變。
!in- 作為運算子用於檢查值是否不屬於一個範圍、一個集合或定義了 'contains' 方法的其他實體。
- 在when 表達式中用於相同的目的。
interface宣告一個介面。is- 檢查一個值是否具有特定型別。
- 在when 表達式中用於相同的目的。
!is- 檢查一個值是否不具有特定型別。
- 在when 表達式中用於相同的目的。
null是一個表示不指向任何物件的物件參照常數。object同時宣告一個類別及其實例。package指定當前檔案的套件。return從最近的封閉函式或匿名函式返回。super- 參照超類別方法或屬性的實作。
- 從次要建構函式呼叫超類別建構函式。
this- 參照當前的接收者。
- 從次要建構函式呼叫同一類別的另一個建構函式。
throw拋出一個例外。true指定Boolean 型別的 'true' 值。try開始一個例外處理區塊。typealias宣告一個型別別名。typeof保留供將來使用。val宣告一個唯讀屬性或區域變數。var宣告一個可變屬性或區域變數。when開始一個 when 表達式(執行給定分支之一)。while開始一個 while 迴圈(帶有前置條件的迴圈)。
軟關鍵字
以下標記在適用上下文中充當關鍵字,並且在其他上下文中可以用作識別符號:
bycatch開始一個處理特定例外型別的區塊。constructor宣告一個主要或次要建構函式。delegate用作註解使用站點目標。dynamic在 Kotlin/JS 程式碼中參照一個動態型別。field用作註解使用站點目標。file用作註解使用站點目標。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 參數。
=- 指派運算子。
- 用於指定參數的預設值。
+=,-=,*=,/=,%=- 擴增指派運算子。++,--- 遞增和遞減運算子。&&,||,!- 邏輯 'and'、'or'、'not' 運算子(對於位元運算,請改用相對應的中綴函式)。==,!=- 相等運算子(對於非基本型別,翻譯為呼叫equals())。===,!==- 參照相等運算子。<,>,<=,>=- 比較運算子(對於非基本型別,翻譯為呼叫compareTo())。[,]- 索引存取運算子(翻譯為呼叫get和set)。!!斷言一個表達式不可為 null。?.執行安全呼叫(如果接收者不可為 null,則呼叫方法或存取屬性)。?:如果左側值為 null 則取右側值(elvis 運算子)。::建立成員參照或類別參照。..,..<建立範圍。:在宣告中將名稱與型別分開。?將型別標記為可為 null 的。->- 分隔Lambda 表達式的參數與主體。
- 分隔函式型別的參數與回傳型別宣告。
- 分隔when 表達式分支的條件與主體。
@- 引入一個註解。
- 引入或參照一個迴圈標籤。
- 引入或參照一個Lambda 標籤。
- 參照外部範圍的 'this' 表達式。
- 參照外部超類別。
;分隔同一行上的多個語句。$在字串模板中參照變數或表達式。_- 在Lambda 表達式中替換未使用的參數。
- 在解構宣告中替換未使用的參數。
對於運算子優先順序,請參閱 Kotlin 文法中此參照。
