Android開發(fā)kotlin學習(二)

這篇主要講的是kotlin里面的空安全和區(qū)間的部分

1.kotlin的空安全

為啥子說kotlin是空安全的?和Java相比,kotlin的空安全可以帶來哪些便利之處?不啰嗦,直接上代碼:

總的有個比較的對吧,那就這樣:寫一個方法,返回年齡,類型String,并且調(diào)用

Java寫法:


這里返回空,沒為題,那么調(diào)用的時候有問題嗎?
也沒問題,那么跑起來的時候啥問題應該都知道了吧...

看看再kotlin中會怎么樣:


在你寫代碼的時候,明確的和你說,這里不能是空的!想運行?門都沒有啊......那怎么樣才能通過呢?

①.明確的返回不為空的數(shù)據(jù)

這樣是沒問題的

②.明確的告訴編譯器,這里返回的是可空類型

這樣也是可以通過的

這里就是kotlin的空安全,在kotlin中,在代碼的編輯階段,編譯器就會幫你檢查對象為空的可能,這時候,要么你要明確的返回一個不為空的數(shù)據(jù)/對象,要么,你就要告訴編譯器我知道這里為空,你可以給我返回,我自己做處理.這是后你可能會疑問了,你加了問好之后,可以返回空了,那不就還是空不安全的嗎?那咱們再往后看:

方法你是寫好了,需要調(diào)用了,Java的方法不用看,一定是可以調(diào)用的,咱們看看當咱們加上?,讓方法可以返回空的時候,在你調(diào)用的地方會怎么樣:


又給指出來了,這里是可能為空的,需要咱們做處理,這里咱們在加個問好,運行時可以的嗎?
沒問題,當然可以,在kotlin中,只要你判斷了空,那么有值就返回值,沒有就打印null,這樣可以給咱們帶來什么好處嗎?有~~,看下面完整的代碼

Java寫法:


image.png

kotlin寫法:



emmmm....應該很一目了然了,kotlin的空安全可以為我們省去很多的 if(xxx == null) 的判斷,可以簡化代碼.

還有下面種情況,我定義個可空的常量,但是給他賦值不是空的,在我明確知道他不是空的情況下,kotlin里面還是會有空檢查機制,在你調(diào)用的時候讓你需要判斷:

這時候有什么處理辦法呢?還是兩種:

2.區(qū)間Rang

區(qū)間這個很簡單,和我們數(shù)學里面的開區(qū)間,閉區(qū)間相似,直接上代碼,解釋和注意事項都在代碼中

/**
 * 區(qū)間
 *
 * */

val mRange : IntRange = 0..100  //表示0-100的閉區(qū)間   等價于[0,100]
val mRange2 : IntRange = 0 until 50  //表示0-100的半閉區(qū)間  等價于[0,50)等價于[0,49]
val mRange3 : IntRange = 10..1

//Range是ClosedRangede 子類

//Range里面包含的方法   1.isEmpty  2.contains
fun main(args: Array<String>) {
    //1.mRange3是空的嗎
    println(mRange3.isEmpty())    //true
    //2.mRange區(qū)間里面包含50嗎
    println(mRange.contains(50))  //true
    //50在 mRange 區(qū)間里面嗎
    println(50 in mRange)         //true
    //mRange2 包含50嗎
    println(mRange2.contains(50))  //false

    //遍歷
    for (i in mRange2){
        print("$i,")
    }
}

附上運行的結(jié)果:


這篇就是這些了,如有不足,歡迎指出,覺得我會改,你就輸了....


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容