上篇:第二篇:Kotlin之運(yùn)算符和表達(dá)式
? ? 說(shuō)起流程的話考抄,相信學(xué)過(guò)java的小伙伴么都知道for, while蔗彤, do while, ?switch等流程控制川梅。在此我也不做過(guò)多的解釋了。在這里我主要會(huì)介紹kotlin對(duì)于when這個(gè)語(yǔ)法糖的用法然遏。其實(shí)kotlin的流程控制除了java的一些外贫途,主要就是for in 和when的介紹,不過(guò)我在前邊已經(jīng)介紹完了for in的用法待侵,所以在這里不會(huì)做過(guò)多的介紹了丢早,如有對(duì)for in有疑慮的朋友請(qǐng)看前幾篇文章。
kotlin的when其實(shí)就是對(duì)java的switch的一個(gè)升級(jí)秧倾。
? ? 對(duì)比一下kotlin和java的when和switch的用法怨酝,其實(shí)基本上差不多的。 kotlin不需要寫(xiě)case了之后用else代替了default那先。在when中會(huì)執(zhí)行”B"所指向的方法體农猬,我們也發(fā)現(xiàn)了在kotlin沒(méi)有寫(xiě)break跳出循環(huán)。難道它也會(huì)像switch那樣不寫(xiě)break的話會(huì)接著執(zhí)行下一個(gè)case進(jìn)行比較么售淡?不是的斤葱,這個(gè)when的結(jié)果是只會(huì)執(zhí)行”比較B"是否相等并且輸出“B"的花括號(hào)里的內(nèi)容后跳出當(dāng)前when。那么有小伙伴會(huì)有這樣的疑慮揖闸,如何像java一樣不寫(xiě)break的話會(huì)執(zhí)行多個(gè)呢苦掘。
了解switch的朋友都知道java的switch 的case不能寫(xiě)表達(dá)式這種。但是Kotlin并不是這樣的楔壤。
有人會(huì)問(wèn) is是什么鬼鹤啡, 其實(shí)kotlin的is就是java的instanceof這樣應(yīng)該就明白了吧!
break蹲嚣,continue的用法和java一樣递瑰,唯獨(dú)是指定位置,進(jìn)行跳出用name + @隙畜,continue也同樣抖部。
? ? 還有就是關(guān)于as的用法, as就是用來(lái)強(qiáng)制類(lèi)型轉(zhuǎn)換的议惰。其實(shí)就是相當(dāng)于android里邊的對(duì)findviewbyid進(jìn)行強(qiáng)制 ?text = findViewById(R.id.txt) as TextView
? ? 在kotlin的中 其實(shí)as是不安全轉(zhuǎn)換慎颗,因?yàn)閗otlin為了避免像java一樣出現(xiàn)“NPE”空指針異常進(jìn)行了null指針的處理,同樣對(duì)as也進(jìn)行了處理。 如果 一個(gè)null類(lèi)型轉(zhuǎn)換成其他類(lèi)型用as肯定會(huì)報(bào)錯(cuò)的俯萎,但是如果使用 a as傲宜?b,即使a是null類(lèi)型也不會(huì)報(bào)錯(cuò)的夫啊,結(jié)果會(huì)給你返回一個(gè)null函卒。所以說(shuō)as是不安全的轉(zhuǎn)換, as撇眯?是安全轉(zhuǎn)換报嵌。
? ? 在這里我認(rèn)為Kotlin流程控制學(xué)會(huì)這些就可以了。因?yàn)楹蚸ava基本一樣熊榛。不一樣的就是for in的用法和when的用法锚国,最后呢 帶著了解 is 和 as的使用就可以了。
?感覺(jué)還不錯(cuò)的小伙伴記得點(diǎn)贊或者關(guān)注啊~~~