一、程序的邏輯控制
????????程序的執行語句主要分為3種:順序語句、條件語句和循環語句。
二、if條件語句
????????if表達式在Kotlin中用于根據條件執行不同的代碼塊。它有兩種形式:普通if和帶返回值的if。
?普通if語句:
????????普通的if語句由關鍵字if
、一個布爾表達式和一個代碼塊組成。如果布爾表達式為true,則執行代碼塊;否則,跳過代碼塊。
val x = 10
if (x > 5) {println("x大于5")
} else {println("x小于等于5")
}
帶返回值的if表達式:?
????????帶返回值的if表達式可以用來簡化代碼。它由關鍵字if
、一個布爾表達式、一個返回值(true分支)和一個返回值(false分支)組成。它會根據布爾表達式的結果返回相應的值。
val x = 10
val result = if (x > 5) "x大于5" else "x小于等于5"
println(result)
函數中帶返回的if:?
fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) num1 else num2
三、when表達式:?
?????????when表達式類似于switch語句,可以根據不同的條件執行不同的代碼塊。它有兩種形式:普通when和帶返回值的when。語法為:匹配值 -> { 執行邏輯 }
?普通when語句:
?????????普通的when語句由關鍵字when
、一個待匹配的值和多個分支組成。每個分支包含一個或多個值,當待匹配的值與分支中的值之一相等時,執行對應的代碼塊。
val x = 2
when (x) {1 -> println("x等于1")2 -> println("x等于2")else -> println("x不等于1和2")
}
帶返回值的when表達式:
????????帶返回值的when表達式可以用來簡化代碼。它由關鍵字when
、一個待匹配的值和多個分支組成。每個分支包含一個或多個值,并且可以有一個特殊的分支else
,用于處理其他未匹配的情況。?
fun getScore(name: String) = when (name) {"Tom" -> 86"Jim" -> 77"Jack" -> 95"Lily" -> 100else -> 0
}
類型匹配:
fun checkNumber(num: Number) {when (num) {is Int -> println("number is Int")is Double -> println("number is Double")else -> println("number not support")}
????????上述代碼中,is關鍵字就是類型匹配的核心,它相當于Java中的instanceof關鍵字。
不在when語句中傳入參數:
fun getScore(name: String) = when {name == "Tom" -> 86name == "Jim" -> 77name == "Jack" -> 95name == "Lily" -> 100else -> 0
}
?????????注意,Kotlin中判斷字 符串或對象是否相等可以直接使用==關鍵字,而不用像Java那樣調用equals()方法。
?其他用法:
????????假設所有名字以Tom開頭的人,他的分數都是86分,這種場景如果用帶參數的when語句 來寫就無法實現,而使用不帶參數的when語句就可以這樣寫,現在不管你傳入的名字是Tom還是Tomy,只要是以Tom開頭的名字,他的分數就是86分。?
fun getScore(name: String) = when {name.startsWith("Tom") -> 86name == "Jim" -> 77name == "Jack" -> 95name == "Lily" -> 100else -> 0
}
四、 循環語句
????????kotlin的循環語句有for循環、while循環和do-while循環。
for循環:
從集合或數組中迭代:?
????????for循環用于對一個集合或者數組進行迭代,逐個處理其中的元素。它的基本語法如下:
val numbers = arrayOf(1, 2, 3, 4, 5)
for (number in numbers) {println(number)
}
????????在上述例子中,我們遍歷了一個整數數組,并將每個元素打印出來。?
Range
來指定循環:
????????val range = 0..10的范圍就是[0, 10]。
fun main() {for (i in 0..10) {println(i)}
}
使用for-in循環遍歷區間:
????????val range = 0 until 10 ,它的數學表達方式是[0, 10)。口訣:左閉右開。
fun main() {for (i in 0 until 10) {println(i)}
}
結合step
函數來指定循環的步長:
fun main() {for (i in 0 until 10 step 2) {println(i)}
}
downTo 關鍵字:
fun main() {for (i in 10 downTo 1) {println(i)}
}
???????????這里我們創建了一個[10, 1]的降序區間。
while循環和do-while循環:?
????????while循環和do-while循環用于根據條件重復執行一段代碼塊。
????????while循環會先檢查條件是否為true,如果是則執行代碼塊,然后再次檢查條件。如果條件為false,則跳過代碼塊。
var i = 0
while (i < 5) {println(i)i++
}
????????do-while循環首先執行一次代碼塊,然后再檢查條件。只有在條件為true時才會繼續執行。?
var i = 0
do {println(i)i++
} while (i < 5)
????????上述兩個例子中,我們通過循環輸出了0到4的數字。?
?五、控制循環流程:
Kotlin提供了幾個控制循環流程的關鍵字:
continue
:用于跳過循環的當前迭代,直接進入下一次迭代。break
:用于完全退出循環,不再執行后續的迭代。return
:用于完全退出函數或者匿名函數,不再執行后續的代碼。
? ? ? ? 通過這些關鍵字可以在循環中靈活使用,根據需要來控制循環的行為。