原文鏈接 https://blog.csdn.net/xfhy_/article/details/79153251
Kotlin關鍵字與操作符
硬關鍵字
以下符號會始終解釋為關鍵字,不能用作標識符:
-
as
- 用于類型轉換
- 為導入指定一個別名
-
as?
用于安全類型轉換(它可以在失敗時返回 null ) -
break
終止循環的執行 -
class
聲明一個類 -
continue
繼續最近層循環的下一步 -
do
開始一個 do/while 循環(后置條件的循環) -
else
定義一個 if 表達式條件為 false 時執行的分支 -
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
指定布爾類型的“真”值 -
try
開始一個異常處理塊 -
typealias
聲明一個類型別名 -
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
用作注解使用處目標 -
where
指定泛型類型參數的約束
修飾符關鍵字
以下符號作為聲明中修飾符列表中的關鍵字,并可用作其他上下文中的標識符:
-
actual
表示多平臺項目中的一個平臺相關實現 -
abstract
將一個類或成員標記為抽象 -
annotation
聲明一個注解類 -
companion
聲明一個伴生對象 -
const
將屬性標記為編譯期常量 -
crossinline
禁止傳遞給內聯函數的 lambda 中的非局部返回 -
data
指示編譯器為類生成典型成員 -
enum
聲明一個枚舉 -
expect
將一個聲明標記為平臺相關,并期待在平臺模塊中實現。 -
external
將一個聲明標記為不是在 Kotlin 中實現(通過 JNI 訪問或者在 JavaScript 中
實現) -
final
禁止成員覆蓋 -
infix
允許以中綴表示法調用函數 -
inline
告訴編譯器在調用處內聯傳給它的函數和 lambda 表達式 -
inner
允許在嵌套類中引用外部類實例 -
internal
將一個聲明標記為在當前模塊中可見 -
lateinit
允許在構造函數之外初始化非空屬性 -
noinline
關閉傳給內聯函數的 lambda 表達式的內聯 -
open
允許一個類子類化或覆蓋成員 -
operator
將一個函數標記為重載一個操作符或者實現一個約定 -
out
將類型參數標記為協變 -
override
將一個成員標記為超類成員的覆蓋 -
private
將一個聲明標記為在當前類或文件中可見 -
protected
將一個聲明標記為在當前類及其子類中可見 -
public
將一個聲明標記為在任何地方可見 -
reified
將內聯函數的類型參數標記為在運行時可訪問 -
sealed
聲明一個密封類(限制子類化的類) -
suspend
將一個函數或 lambda 表達式標記為掛起式(可用做協程) -
tailrec
將一個函數標記為尾遞歸(允許編譯器將遞歸替換為迭代) -
vararg
允許一個參數傳入可變數量的參數
特殊標示符
以下標識符由編譯器在指定上下文中定義,并且可以用作其他上下文中的常規標識符:
-
field
用在屬性訪問器內部來引用該屬性的幕后字段 -
it
用在 lambda 表達式內部來隱式引用其參數
操作符和特殊符號
Kotlin 支持以下操作符和特殊符號:
-
+ 、 - 、 * 、 / 、 %
數學操作符 -
*
也用于將數組傳遞給 vararg 參數 -
=
- 賦值操作符
- 也用于指定參數的默認值
-
+= 、 -= 、 *= 、 /= 、 %=
廣義賦值操作符 -
++ 、 --
遞增與遞減操作符 -
&& 、 || 、 !
邏輯“與”、“或”、“非”操作符(對于位運算,請使用相應的中綴函數) -
== 、 !=
相等操作符(對于非原生類型會翻譯為調用 equals() ) -
=== 、 !==
引用相等操作符 -
< 、 > 、 <= 、 >=
比較操作符(對于非原生類型會翻譯為調用 compareTo() ) -
[ 、 ]
索引訪問操作符(會翻譯為調用 get 與 set ) -
!!
斷言一個表達式非空(一般別用,盡量別用….請看這里) -
?.
執行安全調用(如果接收者非空,就調用一個方法或訪問一個屬性) -
?:
如果左側的值為空,就取右側的值(elvis 操作符) -
::
創建一個成員引用或者一個類引用 -
..
創建一個區間(比如for里面) -
:
分隔聲明中的名稱與類型 -
?
將類型標記為可空 -
->
- 分隔 lambda 表達式的參數與主體
- 分隔在函數類型中的參數類型與返回類型聲明
- 分隔 when 表達式分支的條件與代碼體
-
@
- 引入一個注解
- 引入或引用一個循環標簽
- 引入或引用一個 lambda 表達式標簽
- 引用一個來自外部作用域的 “this”表達式
- 引用一個外部超類
-
;
分隔位于同一行的多個語句 -
$
在字符串模版中引用變量或者表達式 -
_
- 在 lambda 表達式中代替未使用的參數
- 在解構聲明中代替未使用的參數