關鍵字與運算子
硬關鍵字
以下符號總是會被解釋為關鍵字,並且不能作為識別碼使用:
as
as?
用於安全型別轉換。break
終止迴圈的執行。class
宣告一個類別。continue
跳到最近外圍迴圈的下一步。do
開始一個 do/while 迴圈(一個帶有後置條件的迴圈)。else
定義當條件為false
時執行的 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
指示編譯器在呼叫點內聯函式及其傳遞的 lambdas。inner
允許從巢狀類別中參考外部類別實例。internal
將宣告標記為在當前模組中可見。lateinit
允許在建構函式之外初始化一個非空屬性。noinline
關閉傳遞給內聯函式的 lambda 的內聯。open
允許子類化一個類別或覆寫一個成員。operator
將函式標記為運算子多載或實作慣例。out
將型別參數標記為協變。override
將成員標記為父類別成員的覆寫。private
將宣告標記為在當前類別或檔案中可見。protected
將宣告標記為在當前類別及其子類別中可見。public
將宣告標記為在任何地方都可見。reified
將內聯函式的型別參數標記為執行時期可存取。sealed
宣告一個密封類別(一個具有受限子類化的類別)。suspend
將函式或 lambda 標記為 suspend(可作為協程使用)。tailrec
將函式標記為尾遞歸(允許編譯器用迭代替換遞歸)。vararg
允許為參數傳遞可變數量的引數。
特殊識別碼
以下識別碼由編譯器在特定情境中定義,並可在其他情境中用作常規識別碼:
運算子與特殊符號
Kotlin 支援以下運算子與特殊符號:
+
,-
,*
,/
,%
- 數學運算子*
也用於將陣列傳遞給vararg
參數。
=
- 賦值運算子。
- 用於指定參數的預設值。
+=
,-=
,*=
,/=
,%=
- 複合賦值運算子。++
,--
- 遞增和遞減運算子。&&
,||
,!
- 邏輯「與」、「或」、「非」運算子(對於位元運算,請改用相應的中綴函式)。==
,!=
- 相等運算子(對於非原始型別,會轉換為equals()
的呼叫)。===
,!==
- 引用相等運算子。<
,>
,<=
,>=
- 比較運算子(對於非原始型別,會轉換為compareTo()
的呼叫)。[
,]
- 索引存取運算子(會轉換為get
和set
的呼叫)。!!
斷言表達式為非空。?.
執行安全呼叫(如果接收者非空,則呼叫方法或存取屬性)。?:
如果左側值為空,則取右側值(Elvis 運算子)。::
建立成員參考或類別參考。..
,..<
建立範圍。:
在宣告中,將名稱與型別分開。?
將型別標記為可空。->
- 將lambda 表達式的參數與主體分開。
- 在函式型別中,將參數與返回型別宣告分開。
- 將 when 表達式 分支的條件與主體分開。
@
- 引入註解。
- 引入或參考迴圈標籤。
- 引入或參考lambda 標籤。
- 參考來自外部範圍的 'this' 表達式。
- 參考外部父類別。
;
分隔同一行上的多個語句。#
在字串樣板中參考變數或表達式。_
- 替代lambda 表達式中未使用的參數。
- 替代解構宣告中未使用的參數。
有關運算子優先順序,請參閱 Kotlin 語法中的此參考。