【kotlin從入門到深坑】之語句

簡介

本篇博客主要是介紹Kotlin語法中的【語句】相關(guān)的知識走贪,幫助各位更快的掌握Kotlin,如果有疏漏或者錯誤惑芭,請在留言中指正,謝謝遂跟。 系列匯總地址


準(zhǔn)備

在學(xué)習(xí)之前我們先有點基礎(chǔ)知識上的認(rèn)識逃沿,如下:

  • Kotlin中函數(shù)使用fun 關(guān)鍵詞聲明。

條件語句

if表達(dá)式

Kotlinif是表達(dá)式幻锁,也就是說不需要三目運算符了凯亮,因為if本身就支持。下面舉例說明:

val max = if (a > b) a else b  //a=1哄尔,b=2, max=b=2  假消,返回b的值給max

總結(jié):Kotlinif更加智能,不需要判斷分行岭接,如果滿足條件則執(zhí)行if和else之間的語句富拗,反之執(zhí)行else后的語句,不過不使用"{}"時鸣戴,if或else后只能寫一個語句,我們還觀察到if表達(dá)式返回的是變量值(不同于函數(shù)需要return關(guān)鍵詞)啃沪,其實也支持有返回值的函數(shù)

如果在執(zhí)行的時候窄锅,想執(zhí)行更多的語句创千,還需要去寫"{}"。細(xì)心的朋友或許會發(fā)現(xiàn)一個問題,當(dāng)前使用了"{}",如果出現(xiàn)了多個變量值或者有返回值的函數(shù)签餐,其結(jié)果究竟是什么呢寓涨?會如同return一樣嗎,阻斷后續(xù)代碼的執(zhí)行氯檐?下面我們通過例子講解:

//比較兩個值大小
fun ifDemo2(a: Int, b: Int) { //--函數(shù)的概念后續(xù)再講,目前按照java的函數(shù)理解即可
    var max = if (a > b) {
        a
        stringDemo(3)
    } else {
        numberDemo(4)
        b
    }

    println(max)
}
//返回輸入的值 --Int
fun numberDemo(c: Int): Int {
    return c
}
//返回對應(yīng)值的對應(yīng)內(nèi)容--String
fun stringDemo(c: Int): String {
    return c.toString() + "sd"http:// 注意此處不能直接 c+"sd",java中允許体捏,Kotlin中不允許
}

測試:

  • ifDemo2(1冠摄,2) ,結(jié)果 2
  • ifDemo2(2,1),結(jié)果 3sd

總結(jié):
對于if表達(dá)式几缭,其返回的內(nèi)容類型可以不相同河泳,對于可返回值的函數(shù)也同樣支持,且其返回的內(nèi)容僅和其順序有關(guān)年栓,并不會阻斷后續(xù)代碼的執(zhí)行拆挥。


when表達(dá)式

Kotlinwhen取代了java中得switch方法,且功能更加強(qiáng)大支持各種類型某抓。下面舉例說明:

fun whenDemo(a: Any) {//Any 類似java中的Object

    when (a) { 
    
        1 -> println("選擇的1")//使用"->"來表示分支 --Int
        
        "2" -> { //多行語句需要使用"{}" --String
            println("選擇『2』")
        }
        true -> { //--Boolean
            println("選擇true")
        }
        in 0..9 -> {// in 表示是否在range中 --后續(xù)會講
            println("在0-9之內(nèi)")
        }
        is String -> { //is表示是否是某種類型纸兔,類似java中instanceOf() --后續(xù)會講
            println("是字符串")
        }
        numberDemo(3) -> { //支持有返回值的函數(shù)
            println("選擇3")
        }
        10, 11 -> { //當(dāng)兩個條件都執(zhí)行相同代碼時這樣寫
            println("等于10或者11")
        }
        else->{
            printLn("類似default") //類似switch中的default
        }

    }
}

總結(jié):when相比于switch可以支持不同類型的分支語句,其中else類似default需要放在最后且只能有一個否副。


循環(huán)語句

for循環(huán)

Kotlinfor 循環(huán)可以對任何提供迭代器(iterator)的對象進(jìn)行遍歷汉矿,語法如下:

for (item in collection)
      print(item)

循環(huán)體可以是一個代碼塊。

for (item: Int in ints) {
  // ...
}

這個時候你可能就會問了备禀,什么樣的對象提供了迭代器洲拇,滿足下面的條件之一即可:

  • 有一個成員函數(shù)或者擴(kuò)展函數(shù) iterator(),它的返回類型
  • 有一個成員函數(shù)或者擴(kuò)展函數(shù) next()曲尸,并且
  • 有一個成員函數(shù)或者擴(kuò)展函數(shù) hasNext() 返回 Boolean赋续。

當(dāng)然有人或許會問,我想使用之前的for(int i=0;i<list.size;i++) 的形式遍歷呢另患,需要得到索引纽乱,當(dāng)然Kotlin也是支持的,代碼如下:

for (i in array.indices) //注意此處不需要聲明i,默認(rèn)是Int
  print(array[i]) //可以通過索引獲取內(nèi)容

甚至可以讓你體會到遍歷map時的感覺

for ((index, value) in array.withIndex()) { //索引(Int)和值(Any)
    println("the element at $index is $value")
}

此處補(bǔ)充一個關(guān)于數(shù)組的知識柴淘,對于數(shù)組的創(chuàng)建我們都很熟悉了迫淹,但是下面的你見過嗎?

 var array = arrayOf("1", "2", 3, 4) //可以是不同類型的哦为严,這個和python一致

這個也可以進(jìn)行遍歷敛熬,不過value需要使用Any,此處需要注意哦第股。此處的數(shù)據(jù)保存也是按照Any保存应民。


while循環(huán)

whiledo..while 照常使用


while (x > 0) {
  x--
}

do {
  val y = retrieveData()
} while (y != null) // y 在此處可見

總結(jié)

至此已經(jīng)學(xué)完了Kotlin的【語句】相關(guān)的知識,多回顧多思考,繼續(xù)后續(xù)內(nèi)容诲锹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末繁仁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子归园,更是在濱河造成了極大的恐慌黄虱,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庸诱,死亡現(xiàn)場離奇詭異捻浦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)桥爽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門朱灿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钠四,你說我怎么就攤上這事盗扒。” “怎么了缀去?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵侣灶,是天一觀的道長。 經(jīng)常有香客問我朵耕,道長炫隶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任阎曹,我火速辦了婚禮伪阶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘处嫌。我一直安慰自己栅贴,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布熏迹。 她就那樣靜靜地躺著檐薯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪注暗。 梳的紋絲不亂的頭發(fā)上坛缕,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機(jī)與錄音捆昏,去河邊找鬼赚楚。 笑死,一個胖子當(dāng)著我的面吹牛骗卜,可吹牛的內(nèi)容都是我干的宠页。 我是一名探鬼主播左胞,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼举户!你這毒婦竟也來了烤宙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤俭嘁,失蹤者是張志新(化名)和其女友劉穎躺枕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兄淫,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡屯远,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了捕虽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡坡脐,死狀恐怖泄私,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情备闲,我是刑警寧澤晌端,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站恬砂,受9級特大地震影響咧纠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜泻骤,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一漆羔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狱掂,春花似錦演痒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至器虾,卻和暖如春讯嫂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兆沙。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工欧芽, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挤悉。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓渐裸,卻偏偏與公主長得像巫湘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子昏鹃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容