kotlin知識梳理-控制流if、when宽闲、while和for

鎮(zhèn)樓圖

一众眨、if表達式

在kotlin中握牧,if語句是一個表達式,會返回一個值娩梨。有以下幾種用法:

// 用法一
var min = a
if (a > b) min = b //省略花括號

// 用法二
var min: Int
if (a > b) { 
   min = b
} else {
   min = a
}

以上是作為語句時候的用法沿腰,作為表達式的用法如下:

// 用法一
var min = if (a < b) a else b

// 用法二
 var min = if (a < b) { //if的分支可以是代碼塊,最后的表達式作為該塊的值
       print(a)
       a
 } else {
       print(b)
       b
} //a狈定、b作為返回值賦值給min

這里需要注意的是颂龙,當if語句作為表達式時(返回它的值或者把它賦給變量),必須要有else分支纽什,否則將會報錯措嵌。

二、when表達式

kotlin中的when表達式跟java中的switch/case表達式相似芦缰,但它支持的類型更多企巢,還有很多新的特性。

//普通用法
var x: Int = 3
when (x) { 
    1 -> print("one")
    2 -> print("two")
    3 -> print("three")
    else -> print("zero")
} //輸出結果為:three让蕾,如果所有條件都不符合浪规,那么就會走else分支,打犹叫ⅰ:zero罗丰。

同時,when表達式也支持返回值和代碼塊的形式再姑,在下面實例中,else分支的代碼塊最后一個表達式x代表返回的結果找御,這個時候如果x = 3的話元镀,會輸出“three”,但是沒有返回值霎桅,那么打印b的時候會輸出:Kotlin.Unit栖疑,感興趣的朋友可以試試~

//含有代碼塊和返回值的用法
var x: Int = 0
val b = when (x) { 
    1 -> print("one")
    2 -> print("two")
    3, 4 -> print("three")  //同個分支可以有多個值,用逗號隔開
    else -> {
         print("zero")
         x
    }
} 
print("打犹鲜弧:$b")  ////輸出結果為:zero 0

可以用in!in來檢測一個值是否在集合區(qū)間中:

when (x) {
    in 1..20 -> print("x is in the range")
    !in 20..30 -> print("x is outside the range")
    else -> print("none of the above")
}

也可以用is!is來判斷一個值是不是特定類型的值:

when (view) {
    is TextView -> view.text  //自動類型轉換
    is ListView -> view.getItemAtPosition(1)
    !is ImageView-> print("this is not ImageView")
    else -> print("no this view")
}

kotlin中的is操作符可以對不可變值進行檢測和類型智能轉換遇革,像上面is TextView成立的話,view就會自動轉化為TextView揭糕,就可以直接調用TextView的方法來拿到text值了萝快。

三、while表達式

kotlin中的while表達式和do...while表達式用法跟java一樣

// while用法
var x: Int = 5
while (x > 0) {
    x--
}

// do...while用法
var x: Int = 5
do {
    x--
} while (x > 0)

四著角、for表達式

在kotlin中遍歷數組

val array: Array<String> = arrayOf("1", "2", "3")
for (item in array) {
    println("打泳句觥:$item") //輸出結果:1 2 3
}

在kotlin中打印數組下標,用array.indices

val array: Array<String> = arrayOf("1", "2", "3")
for (index in array.indices) {
     println("打永艨凇:$index") //輸出結果:0 1 2
}

在kotlin中同時打印數組的下標和值奄容,用array.withIndex()冰更,index在前代表下標,value在后代表值

val array: Array<String> = arrayOf("1", "2", "3")
for ((index, value) in array.withIndex()) {
    println("(index=$index---value=$value)") //輸出結果:(index=0---value=1)昂勒、(index=1---value=2)蜀细、(index=2---value=3)
}

在kotlin中打印1到100

for (item in 1..100) {
    println("打印:$item") //輸出結果:1 2 3 4...100
}

如果想打印倒序100到1戈盈,就要用downTo方法

for (item in 100 downTo 1) {
     println("打拥煜巍:$item") //輸出結果:100 99 98 97...1
}

如果想在1到100中有規(guī)律地輸出一些數字,則需要用step方法

for (item in 1..100 step 2) {
     println("打愚忍贰:$item") //輸出結果:1 3 5 7 9...99
}

總結:以上主要介紹了kotlin中控制流if涣觉、when、for和while的簡單用法血柳,他們的寫法跟java還是差不多的官册,同時,提供了更多的方法方便開發(fā)难捌,減少代碼量膝宁。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市根吁,隨后出現的幾起案子员淫,更是在濱河造成了極大的恐慌,老刑警劉巖击敌,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件介返,死亡現場離奇詭異,居然都是意外死亡沃斤,警方通過查閱死者的電腦和手機圣蝎,發(fā)現死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衡瓶,“玉大人徘公,你說我怎么就攤上這事∠耄” “怎么了关面?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長十厢。 經常有香客問我等太,道長,這世上最難降的妖魔是什么蛮放? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任澈驼,我火速辦了婚禮,結果婚禮上筛武,老公的妹妹穿的比我還像新娘缝其。我一直安慰自己挎塌,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布内边。 她就那樣靜靜地躺著榴都,像睡著了一般。 火紅的嫁衣襯著肌膚如雪漠其。 梳的紋絲不亂的頭發(fā)上嘴高,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音和屎,去河邊找鬼拴驮。 笑死,一個胖子當著我的面吹牛柴信,可吹牛的內容都是我干的套啤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼随常,長吁一口氣:“原來是場噩夢啊……” “哼潜沦!你這毒婦竟也來了?” 一聲冷哼從身側響起绪氛,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤唆鸡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后枣察,有當地人在樹林里發(fā)現了一具尸體争占,經...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年序目,在試婚紗的時候發(fā)現自己被綠了燃乍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡宛琅,死狀恐怖,靈堂內的尸體忽然破棺而出逗旁,到底是詐尸還是另有隱情嘿辟,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布片效,位于F島的核電站红伦,受9級特大地震影響,放射性物質發(fā)生泄漏淀衣。R本人自食惡果不足惜昙读,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望膨桥。 院中可真熱鬧蛮浑,春花似錦唠叛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蕴掏,卻和暖如春障般,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盛杰。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工挽荡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人即供。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓定拟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親募狂。 傳聞我的和親對象是個殘疾皇子办素,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345