官方文檔java
官方中文數組
` 包起來// 若是 in 爲java的一個函數, 定義以下 // class A{ // void in(); // } x = A() x.`in`() // in 是kotlin關鍵字
kotling關鍵字:ide
關鍵字 | 說明 |
---|---|
abstract | 抽象聲明,被標註對象默認是open |
annotation | 註解聲明 |
by | 類委託、屬性委託 |
class | 聲明類 |
companion | 伴生對象聲明 |
const | 聲明編譯期常量 |
constructor | 聲明構造函數 |
crossinline | 標記內聯函數的lambda表達式參數,標識該lambda函數返回爲非局部返回,不容許非局部控制流 |
data | 數據類,聲明的類默認實現equals()/hashCode()/toString/copy()/componentN() |
enum | 聲明枚舉類 |
field | 屬性的幕後字段 |
fun | 聲明函數 |
import | 導入 |
in | 修飾類型參數,使其逆變:只能夠被消費而不能夠被生產 |
init | 初始化塊;至關於主構造函數的方法體 |
inline | 聲明內聯函數 |
inner | 標記嵌套類,使其成爲內部類:可訪問外部類的成員 |
interface | 聲明接口 |
internal | 可見性修飾符,相同模塊內可見 |
lateinit | 延遲初始化,避免空檢查 |
noinline | 禁用內聯,標記內聯函數不須要內聯的參數 |
object | 對象表達式、對象聲明 |
open | 容許其它類繼承;kotlin類默認都是final,禁止繼承 |
operator | 標記重載操做符的函數 |
out | 修飾類型參數,使其協變:只能夠被生產而不能夠被消費 |
override | 標註複寫的方法、屬性 |
package | 包聲明 |
private | 可見性修飾符,文件內可見 |
protected | 可見性聲明,只修飾類成員,子類中可見 |
public | kotlin默認的可見性修飾符,隨處可見 |
reified | 限定類型參數,須要配合inline關鍵字使用 |
sealed | 聲明密封類,功能相似枚舉 |
super | 訪問超類的方法、屬性 |
suspend | 聲明掛起函數,該函數只能從協程和其餘掛起函數中調用 |
throw | 拋異常 |
typealias | 聲明類型別名 |
val | 聲明只讀屬性 |
var | 聲明可變屬性 |
vararg | 修飾函數參數:聲明爲可變數量參數 |
as
或 as?
x: A = y as A //將y強轉爲 A 類型 x: A? = y as? A //將y強轉爲 A 類型, 轉換失敗可爲 null
as
import xxx.xxx.A import yyy.yyy.A as YA //爲避免與 xxx.xxx.A衝突,引進別名 x = A() // == xxx.xxx.A() y = YA() //使用別名建立對象, == yyy.yyy.A()
typealias A = ABCDEFG //類別太長,設置個短的別名 x = A()
is
可判斷對象的實際類型,一旦判斷成功,能夠不用強轉,直接使用該類型方法class ABC { fun abc() { } } val x: Any = ABC() x.abc() //error, x是Any類型,沒有 abc() 方法 if( x is ABC ) { x.abc() // OK ,已經知道 x 就是 ABC 類型 }
open
,默認是不可繼承的in
運算判斷元素是否在集合中, ..
運算表示一個範圍, !in
運算判斷元素不在集合中x in 1 .. 9 // x = 1 到 9 的任何Int 就返回 true for( y in 0 .. 100) { println(y) //循環0到100, 打印 }
new Int[] { 1,2,3 ...}
這樣的不定參數初始化var x = arrayOf(1,2,3) // 數組 [ 1, 2, 3 ] x = arrayOf(1,2,3,4,5) // 數組 [ 1, 2, 3, 4, 5 ]
不定參數定義函數
fun f1( vararg ls: Int) { for ( x in ls ) { println("${x} , ") } } f1(1,2,3) // 輸出 1 , 2 , 3 , f1(1,2,3,4,5) // 輸出 1 , 2 , 3 , 4 , 5 ,
internal
修飾的類,函數,屬性,變量,在同一模塊(如打包成同一給 jar 文件的代碼屬於同一個模塊)是全局 public
的,可是到了模塊外,就是 private
的,不可調用,這樣能夠保護一些內部敏感函數不被外界調用