簡介
本篇博客主要是介紹Kotlin語法中的【語句】相關的知識,幫助各位更快的掌握Kotlin,如果有疏漏或者錯誤,請在留言中指正,謝謝。 系列彙總地址
準備
在學習之前我們先有點基礎知識上的認識,如下:
Kotlin
中函數使用fun
關鍵詞聲明。
條件語句
if表達式
在Kotlin
中if
是表達式,也就是說不需要三目運算符了,因爲if
本身就支持。下面舉例說明:
val max = if (a > b) a else b //a=1,b=2, max=b=2 ,返回b的值給max
總結:Kotlin
中if
更加智能,不需要判斷分行,如果滿足條件則執行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表達式
在Kotlin
中when
取代了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循環
Kotlin
中for
循環可以對任何提供迭代器(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循環
while
和 do..while
照常使用
while (x > 0) {
x--
}
do {
val y = retrieveData()
} while (y != null) // y 在此處可見
總結
至此已經學完了Kotlin
的【語句】相關的知識,多回顧多思考,繼續後續內容。