關鍵字與運算子
硬關鍵字
以下標記總是會被解釋為關鍵字,並且不能用作識別符號:
as
as?
用於安全型別轉換。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 迴圈(帶有前置條件的迴圈)。
軟關鍵字
以下標記在適用上下文中充當關鍵字,並且在其他上下文中可以用作識別符號:
by
catch
開始一個處理特定例外型別的區塊。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 文法中此參照。