kotlin學習(五)

kotlin的類型系統

一.可空性
1.可空類型
問號可以加在任何類型的後面來表示這類型可以保存null引用,kotlin中的類型都表示其非空
沒有問號的類型表示其不能存儲null引用
2.安全調用運算符 ?.

var name : String? = user?.name

3.Elvis運算符:提供代替null的默認值

fun foo(s : String?){
	val t :String = s ?: ""
}//如果s爲null,則返回一個空字符串

fun strLen(s : String?) : Int = s?.length ?: 0

4.安全轉換 as?
運算符嘗試把值轉換成指定的類型,如果值不是合適的類型就爲null
5.非空斷言 !!
運算符可以把任何值轉換成非空類型。如果對null做非空斷言,則會拋出異常
拋出異常的位置爲非空斷言所在的位置
6.let函數
let函數用於處理可空表達式,把調用它的對象變成lambda表達式的參數
當參數不爲null時,執行lambda表達式;當參數爲null時,什麼都不發生

email?.let{
	sendEmail(it)
}

7.延遲初始化的屬性:通過lateinit關鍵字標記
8.可空類的拓展、類型參數的可空性

二.數據類型
kotlin並不區分基本數據類型和包裝類型
在運行時,數字類型會儘可能使用最高效的方式來表示,除了泛型類。
在進行數字轉換時,kotlin需要顯式的進行轉換

val i = 1//int
val l : Long = i.toLong()//顯式轉換

Any類型
對應Java中的Object類,Any類型是kotlin中所有非空類型的超類型
把基本數據類型的值傳遞給Any變量是會自動裝箱
當kotlin使用Any時,它會被編譯成Java字節碼中的Object

Unit類型類比於Java的void,Nothing類型表示這個函數永不返回

三.集合與數組

List<Int?>//集合本身不爲空,但是列表中每個值可能爲空
List<Int>?//集合可能爲空,但是列表中的每個值都不爲空

只讀集合和可變集合
數組的創建

方法 作用
arrayOf 創建一個數組,包含元素時指定爲該函數的實參
arrayOfNulls 創建包含null的數組
Array 構造方法接受數組大小和lambda表達式
var array = Array<26>{  i  -> ('a' + i).toString() }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章