郭霖第三行代碼讀書筆記!
val 與 var
val(value的簡寫)用來聲明一個不可變的變量,這種變量在初始化賦值之後就在也不能重新賦值,對應java中的final變量。
var(variable的簡寫)用來聲明一個可變的變量,這種變量在初始化賦值之後仍然可以在被重新賦值,對應java中的非final變量。
永遠優先使用val來聲明一個變量,當val無法滿足需求時再使用var。
關鍵字 data
data class Study(val name:String, val sex:String)
當一個類前面聲明瞭data關鍵字時,表明這個類是數據類,kotlin會主動自動生成equals()、hasCode()、toString()。
集合 list set map
Sist集合
val list = listOf("item1","item2","item3") //初始化賦值後不能後不可變。
val list2 = mutableListOf("item1","item2","item3")//初始化後可變。
Set集合
val set = setOf("item1","item2","item3")//初始化賦值後不能後不可變。
val set2 = mutableSetOf("item1","item2","item3")//初始化後可變。
Map集合
val map = mapOf("item1" to 1,"item2" to 2)//初始化賦值後不能後不可變。
val map2 = mutableMapOf("item1" to 1,"item2" to 2)//初始化後可變。
?. 與 ?:
當一個類對象調用其中的變量name時有可能爲空就使用 " ?. "
student?.name 當這個學生類中的name變量爲null時 什麼都不做 相當於java中的判空處理。
student?.name ?: "張三" 當這個學生類中的name變量爲null時,返回 "張三",否則返回student?.name。
函數let
fun study(study:Study?){、
/* 統一添加到 let中不需要每個變量都加?.*/
study?.let {
println(it.name)
println(it.sex)
}
}
Lambda特性,當Lambda表達式的參數列表中只有一個參數時可以不聲明參數名,直接使用it關鍵字代替。