在kotlin中if 是表達式;Java中賦值操做是表達式,而在kotlin中變成了語句java
kotlin中聲明變量以關鍵字開始,而後是變量名稱,最後能夠加上類型數組
關鍵字:val--表示不可變引用,對應java中的final
函數
var--表示可變引用ui
字符串模板:或者用${}包圍一個表達式spa
fun main(args: Array<String>) {
println("Hello, ${if (args.size > 0) args[0] else "someone"}!")
}
複製代碼
用關鍵字fun
來聲明函數.net
能夠定義在文件最外層,沒必要放入類中code
表達式函數體:若是一個函數體是由單個表達式構成,能夠用這個表達式做爲一個完整的函數體對象
例如:對以下接口
//代碼體塊
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}
複製代碼
//表達式函數體
fun max(a: Int, b: Int):Int = if (a > b) a else b
複製代碼
//表達式函數體+類型推導
fun max(a: Int, b: Int) = if (a > b) a else b
複製代碼
數組就是類element
只有數據沒有代碼的對象叫作值對象
屬性:
person.isMarried = false
實際調用的是setter自定義訪問器
class Rectangle(val height: Int, val width: Int) {
val isSquare: Boolean
get() {
return height == width
}
}
複製代碼
標記類實現接口,例如:
class Num(val value: Int) : Expr
複製代碼
when
相似於java中的switch但功能更增強大if
和when
均可以使用代碼塊做爲分支體,在這種狀況下,代碼塊中的最後一個表達式就是結果
區間:本質上是兩個值之間的間隔,一個起始值,一個結束值用..
來表示區間
Kotlin中區間是閉合的,這就意味這第二個值始終是區間的一部分
//從100開始倒着計數而且只記偶數
for (i in 100 downTo 1 step 2) {
print(fizzBuzz(i))
}
複製代碼
使用until
來表示不包含指定結束值得半閉合區間
迭代map
//letter表明key, binary表明value, binaryReps表明Map
for ((letter, binary) in binaryReps) {
println("$letter = $binary")
}
複製代碼
可使用map[key] = value
來設置讀取值,binaryReps[c] = binary
等價於 binaryReps.put(c, binary)
用withIndex()
在迭代集合時追蹤當前項的下標,不須要建立一個單獨的變量來存儲下標並手動增長他:
val list = arrayListOf("1", "11", "111")
for ((index, element) in list.withIndex()) {
printlin("$index: $element")
}
複製代碼
使用in
來檢查集合和區間的成員
in
運算符來檢查一個值是否在區間中,!n
檢查這個值是否不在區間中is
檢查和java中的instanceOf
類似,在檢查過變量具備某種類型以後沒必要再顯式地轉換它的類型:編譯器使用智能轉換as
關鍵字來表示到特定類型的顯示轉換new
關鍵字來建立異常實例throw
結構是一個表達式,能做爲另外一個表達式的一部分使用ps:本文參考自:《kotlin實戰》
之後每一週會堅持更新一篇讀書筆記