Kotlin NULL檢查和處理(?: 、 ?. 、 !!)

Kotlin校驗字符串空值的幾個方法:

isNullOrEmpty : 爲空指針或者字串長度爲0時返回true,非空串與可空串均可調用。

isNullOrBlank : 爲空指針或者字串長度爲0或者全爲空格時返回true,非空串與可空串均可調用。

isEmpty : 字串長度爲0時返回true,只有非空串可調用。

isBlank : 字串長度爲0或者全爲空格時返回true,只有非空串可調用。

isNotEmpty : 字串長度大於0時返回true,只有非空串可調用。

isNotBlank : 字串長度大於0且不是全空格串時返回true,只有非空串可調用。

 

字符串聲明或者調用其他對象類型的方法,仍需要判斷空指針,如下代碼爲例:

//不能爲空
var age: String = "123"
//不能爲空,lateinit關鍵字可對非空屬性 延遲初始化
lateinit var age : String

//類型後面加?表示可爲空
var age1: String? = "23" 
var age2: String? = null


//拋出空指針異常
val ages = age2!!.toInt()

//不做處理返回 null
val ages1 = age2?.toInt()

//age爲空返回-1
val ages2 = age2?.toInt() ?: -1

 1、按照Java的寫作習慣

    val ages = if (age != null) age.toInt() else -1

 

2、運算符  ?.  

    val ages = age?.toInt()

   等價於 ages = if (age ! = null ) age.toInt() else null 。意味着返回值仍然可能爲空,如不想返回結果爲null,還需零做判斷。

 

3、運算符  ?:

   val ages = age?.toInt() ?: -1

   等價於 ages = if (age ! = null ) age.toInt() else -1。類似於java三元運算符“變量名=條件語句 ?取值A  :取值B” 的縮寫,這樣可以確保返回值不爲null

 

4、運算符  !!  強行放棄非空判斷,使用時必須在確保執行對象非空

   val ages = age !! .toInt()

   爲了保障,最好添加異常捕獲處理

   try {

      val ages = age !! .toInt()

    } catch ( e :Exception) {

    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章