一、程序的逻辑控制
程序的执行语句主要分为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
:用于完全退出函数或者匿名函数,不再执行后续的代码。
通过这些关键字可以在循环中灵活使用,根据需要来控制循环的行为。