Kotlin從入門(mén)到放棄(三) 控制語(yǔ)句

Kotlin從入門(mén)到放棄(三) 控制語(yǔ)句

前面總結(jié)的基本類型和容器的用法,接下來(lái)我們來(lái)學(xué)習(xí)Kotlin在控制語(yǔ)句上的改進(jìn)和優(yōu)化蚣常,是如何方便我們我們?cè)陂_(kāi)發(fā)中的日常使用市咽。

1.條件分支

1.1簡(jiǎn)單分支

Kotlin的if...else...語(yǔ)句基本用法同Java一樣,如下面所示:

 if(flag){
     tx.setText("Kotlin")
 }
 else{
     tx.setText("Java")
 }

因?yàn)镵otlin支持分支語(yǔ)句返回字符串史隆,所以我們可以寫(xiě)成下面的格式魂务。

  var str = ""
  str = if(flag) "Kotlin" else "Java"
1.2多路分支

Kotlin推出新的when/else 來(lái)替代Java的switch/case語(yǔ)句,處理多路分支的條件判斷泌射,下面看具體例子粘姜。

 when(count){
     1 -> str = "Kotlin"
     2 -> str = "Java"
     else -> str = "C"
        }
  1. 關(guān)鍵字switch被when取代
  2. 判斷語(yǔ)句“case 常量值” 被新語(yǔ)句“常量值 ->”取代
  3. 每個(gè)分支后面的break語(yǔ)句被取消了,Kotlin默認(rèn)處理完一個(gè)分支就跳出多路語(yǔ)句熔酷。
  4. 關(guān)鍵字default被else取代孤紧。
  5. 以前Java在case后面只能跟常量,不能跟變量【苊兀現(xiàn)在kotlin去掉了這個(gè)限制号显,進(jìn)行分支處理時(shí)允許引入變量判斷臭猜,引入具體的運(yùn)算表達(dá)式也是可以的。
  6. Kotlin可以“in 開(kāi)始值...結(jié)束值...” “!in 開(kāi)始值...結(jié)束值...”來(lái)指定區(qū)間范圍押蚤。
when(count){
    in 1..3 -> str = "Kotlin"
    !in 5..9 -> str = "Java"
    10,11,12 -> str = "C"
 }
1.3類型判斷

在Java中我們判斷變量類型用instanceof蔑歌,但是在kotlin里我們使用is 來(lái)判斷變量的類型。

if(str is String){
   ...
}

2.循環(huán)處理

2.1遍歷循環(huán)

Kotlin循環(huán)遍歷具體語(yǔ)句“for(item in list)”
Kotlin中使用for(i in 數(shù)組變量.indices)來(lái)實(shí)現(xiàn)數(shù)組下標(biāo)的處理揽碘。indices表示數(shù)組變量的下標(biāo)數(shù)組次屠。

2.2條件循環(huán)

使用while進(jìn)行循環(huán)判斷
或者使用do/while循環(huán)判斷

2.3跳出多重循環(huán)

Kotlin通過(guò)加@標(biāo)記,我們可以直接從內(nèi)循環(huán)跳出外層循環(huán)雳刺。

3空安全

3.1Kotlin檢驗(yàn)字符串空值的方法
  • isNullOrEmpty:為空指針或者字符串長(zhǎng)度為0時(shí)返回true劫灶,非空和空串都可調(diào)用
  • isNullOrBlank:為空指針、字符串長(zhǎng)度為0或者全為空格時(shí)返回true掖桦,非空和空串都可調(diào)用
  • isEmpty:字符串長(zhǎng)度為0時(shí)返回true本昏,只有非空字符串可以調(diào)用
  • isBlank:字符串長(zhǎng)度為0或者全為空格時(shí)返回true,只有非空字符串可以調(diào)用
  • isNotEmpty:字符串長(zhǎng)度大于0時(shí)返回true枪汪,只有非空字符串可以調(diào)用
  • isNotBlank:長(zhǎng)度大于0且不是全空格時(shí)返回true涌穆,只有非空字符串可以調(diào)用
3.2聲明可空變量

在Kotlin中聲明可空變量如下:

 var name:String?
  1. 聲明變量實(shí)例時(shí),在類型名稱后面加問(wèn)號(hào),表示該變量可以為空雀久。
  2. 調(diào)用變量方法時(shí)蒲犬,在變量名稱后面加問(wèn)號(hào),表示一旦變量為空就返回null岸啡。
  3. 新引用運(yùn)算符“?:”赫编,表示變量一旦為空巡蘸,就返回該運(yùn)算符右邊的表達(dá)式。
  4. 新引入運(yùn)算符“@匏汀悦荒!”,通知編譯器不做非空校驗(yàn)嘹吨。如果運(yùn)行時(shí)為空時(shí)拋出異常搬味。

4.等式判斷

4.1結(jié)構(gòu)相等

在Java中實(shí)現(xiàn)了equals函數(shù)的類,在Kotlin中都可以通過(guò)運(yùn)算符 “==” “蟀拷!=”進(jìn)行等式判斷碰纬。這種判斷不比較存儲(chǔ)地址,而是比較變量結(jié)構(gòu)內(nèi)部值是否相等的行為问芬,kotlin稱為結(jié)構(gòu)相等悦析,模樣相等。

4.2引用相等

在Kotlin中都可以通過(guò)運(yùn)算符 “===” “此衅!==”進(jìn)行等式判斷區(qū)分是否是同一內(nèi)存地址强戴。

  1. 基本數(shù)據(jù)類型亭螟,結(jié)構(gòu)相等和引用相等沒(méi)有區(qū)別
  2. 同一個(gè)類聲明的不同變量,屬性不等骑歹,結(jié)構(gòu)不相等预烙,引用不等
  3. clone聲明的變量,結(jié)構(gòu)相等道媚,內(nèi)容不等扁掸。
4.3 is和in
運(yùn)算符is和!is

校驗(yàn)變量是否是某種類型衰琐,寫(xiě)法如下

var result = count is Int
var result = count !is Int
運(yùn)算符in和也糊!in

校驗(yàn)數(shù)組是否存在此元素,寫(xiě)法如下

var result = count in nameArray
var result = count !in nameArray
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末羡宙,一起剝皮案震驚了整個(gè)濱河市狸剃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌狗热,老刑警劉巖钞馁,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異匿刮,居然都是意外死亡僧凰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)熟丸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)训措,“玉大人,你說(shuō)我怎么就攤上這事光羞〖” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵纱兑,是天一觀的道長(zhǎng)嘉裤。 經(jīng)常有香客問(wèn)我蚀之,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任公你,我火速辦了婚禮庶骄,結(jié)果婚禮上澳眷,老公的妹妹穿的比我還像新娘习柠。我一直安慰自己,他們只是感情好倒信,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布淫奔。 她就那樣靜靜地躺著,像睡著了一般堤结。 火紅的嫁衣襯著肌膚如雪唆迁。 梳的紋絲不亂的頭發(fā)上鸭丛,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音唐责,去河邊找鬼鳞溉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鼠哥,可吹牛的內(nèi)容都是我干的熟菲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼朴恳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼抄罕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起于颖,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤呆贿,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后森渐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體做入,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年同衣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竟块。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡耐齐,死狀恐怖浪秘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情埠况,我是刑警寧澤秫逝,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站询枚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏浙巫。R本人自食惡果不足惜金蜀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望的畴。 院中可真熱鬧渊抄,春花似錦、人聲如沸丧裁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)煎娇。三九已至二庵,卻和暖如春贪染,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背催享。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工杭隙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人因妙。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓痰憎,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親攀涵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铣耘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360