kotlin-常用操作符

1:Elvis操作符

如果 ?: 左邊表達式非空,elvis操作符就會返回左邊的結果,否則返回右邊的結果。

請注意,僅在左側爲空的時候,右側的表達式纔會計算。

fun elvisTest(b: String?) {
    val a= b?.length ?: -1
    // 等價於 val a:Int = if( b!= null) b.length else -1
    Log.d("alen","b is${b}" + ",a is " +a)
}

2:類型轉換as和安全轉換 as?

當使用 as 轉型的時候,可能會經常出現 ClassCastException。 所以,現在可以使as?安全轉型,當轉型不成功的時候,它會返回 null。

fun safeCast(param: Any) {

    val m: Int? = if(param is Int) param else null
    Log.d("alen","param is ${param}" + ",m is " + m)

    val n: Int? = param as? Int
    Log.d("alen","param is ${param}" + ",n is " +n)
}

3:kotlin空安全(Null Safety)

每一個開發人員都會遇到這樣的問題:在使用某個對象時,必須得考慮這個對象是否爲空。如果對象可能爲空,則不得不需要寫 if(object != null) 之類的代碼,如果判斷條件寫反,或者少寫了一個條件判斷,應用就會在運行時出現Crash 了。於是我們千辛萬苦寫的代碼,到頭來卻被各種 NullPointerException 害苦。而現在 Kotlin Null Safety 能幫助我們節省時間,脫離空指針的苦海。

Kotlin 定義變量有兩種方式,可以爲 Null 和不可以爲 Null。在變量類型後面加?表示該變量可以爲 Null

//定義一個可以爲null的變量
var name: String? = null
//定義一個不可以爲null的變量,如果此時賦值爲null,則會報異常
val country: String = "china"

//報錯,可能爲null的變量不可以直接調用其方法
//        var length: Int = name.length

//如果name爲null則pass,如果name不爲null則調用count()方法
var length: Int? = name?.count()

//不管name是否爲null都調用count()方法,如果爲null,則拋出NullPointerException
var count: Int = name!!.count()

//由於country不爲null,則可以直接調用其count方法
var countryCount: Int = country.count()

4:冒號:

1、類型和超類型之間的冒號前要有一個空格

2、實例和類型之間的冒號前不要空格

// 定義全局變量時
var str: String? = null

// 類的繼承與變量定義
class KotlinTestActivity<T : Serializable>(name: String) : Activity() {

}

5:類型判斷符 is

檢查某個實例是否是某個類型,如果判斷出屬於某個類型,那麼判斷後的分支中可以直接可當該類型使用,無需顯示轉換。

fun getStringLength(obj: Any): Int {

    if(obj is String && obj.length >0) {
       return obj.length
    }
    return -1;
}

6:範圍操作符 .. 以及 in

使用 in 運算符來檢查某個數字是否在指定區間內

for(i in 1..5) {
    Log.d("alen","i is " +i)
}
// 結果
// i is 1
// i is 2
// i is 3
// i is 4
// i is 5

downTo()函數

//區間內循環:downTo()函數
for(i in 4 downTo 1) {
    //倒序遍歷
    Log.d("alen","i is " +i)
}
// i is 4
// i is 3
// i is 2
// i is 1

step()函數

可以進行任意數量的迭代,而不是每次變化都是1

// step()函數 可以進行任意數量的迭代,而不是每次變化都是1
for(i in 0..5 step 2) {
   Log.d("alen","i is " +i)
}
// i is 0
// i is 2
// i is 4

// 以步長爲2從4到1進行循環
for(i in 4 downTo 1 step 2) {
   Log.d("alen","i is " +i)
}
// i is 4
// i is 2

多行輸入符 三個雙引號

三引號的形式用來輸入多行文本,也就是說在三引號之間輸入的內容將被原樣保留,之中的單號和雙引號不用轉義,其中的不可見字符比如/n和/t都會被保留.

valstr = """
          one
          two
              """
//等價於
val str = "one\ntwo"
val str = "one"+"\n"+"two"

 

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