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

簡介

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


準備

在學習之前我們先有點基礎知識上的認識,如下:

  • Kotlin中函數使用fun 關鍵詞聲明。

條件語句

if表達式

Kotlinif是表達式,也就是說不需要三目運算符了,因爲if本身就支持。下面舉例說明:

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

總結:Kotlinif更加智能,不需要判斷分行,如果滿足條件則執行if和else之間的語句,反之執行else後的語句,不過不使用”{}”時,if或else後只能寫一個語句,我們還觀察到if表達式返回的是變量值(不同於函數需要return關鍵詞),其實也支持有返回值的函數

如果在執行的時候,想執行更多的語句,還需要去寫”{}”。細心的朋友或許會發現一個問題,當前使用了”{}”,如果出現了多個變量值或者有返回值的函數,其結果究竟是什麼呢?會如同return一樣嗎,阻斷後續代碼的執行?下面我們通過例子講解:

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

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

測試:

  • ifDemo2(1,2) ,結果 2
  • ifDemo2(2,1),結果 3sd

總結:
對於if表達式,其返回的內容類型可以不相同,對於可返回值的函數也同樣支持,且其返回的內容僅和其順序有關,並不會阻斷後續代碼的執行。


when表達式

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

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中 --後續會講
            println("在0-9之內")
        }
        is String -> { //is表示是否是某種類型,類似java中instanceOf() --後續會講
            println("是字符串")
        }
        numberDemo(3) -> { //支持有返回值的函數
            println("選擇3")
        }
        10, 11 -> { //當兩個條件都執行相同代碼時這樣寫
            println("等於10或者11")
        }
        else->{
            printLn("類似default") //類似switch中的default
        }

    }
}

總結:when相比於switch可以支持不同類型的分支語句,其中else類似default需要放在最後且只能有一個。


循環語句

for循環

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

for (item in collection)
      print(item)

循環體可以是一個代碼塊。

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

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

  • 有一個成員函數或者擴展函數 iterator(),它的返回類型
  • 有一個成員函數或者擴展函數 next(),並且
  • 有一個成員函數或者擴展函數 hasNext() 返回 Boolean

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

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

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

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

此處補充一個關於數組的知識,對於數組的創建我們都很熟悉了,但是下面的你見過嗎?

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

這個也可以進行遍歷,不過value需要使用Any,此處需要注意哦。此處的數據保存也是按照Any保存。


while循環

whiledo..while 照常使用


while (x > 0) {
  x--
}

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

總結

至此已經學完了Kotlin的【語句】相關的知識,多回顧多思考,繼續後續內容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章