目录
- 一、if 表达式
- 二、when 表达式
条件控制是每门编程语言中必不可少的,一般就是我们熟知的 if - else ,来作为我们代码逻辑选择条件控制。在 Java 中一般使用 if - else 和 switch - case 来作为条件控制,而在 Kotlin 中则是使用 if - else 和 when 来作为条件控制。
1.1 传统写法(同Java写法一样)
var numA = 2
if (numA == 2){
println("numA == $numA => true")
}else{
println("numA == $numA => false")
}
输出结果:
numA == 2 => true
1.2 Kotlin 中的三元运算符
- 在 Kotlin 中其实是不存在三元运算符 (condition ? then : else) 这种操作的。
- 那是因为 if 语句的特性 (if表达式会返回一个值) 故而不需要三元运算符。
// 在Java中可以这么写,但是Kotlin中直接会报错。
// var numB: Int = (numA > 2) ? 3 : 5
// kotlin中直接用if..else替代。例:
var numB: Int = if ( numA > 2 ) 3 else 5 // 当numA大于2时输出numB的值为3,反之为5
println("numB = > $numB")
输出结果:
numB = > 3
1.3 作为一个块结构,并且最后一句表达式为块的值
var numA: Int = 2
var numC: Int = if (numA > 2){
numA++
numA = 10
println("numA > 2 => true")
numA
}else if (numA == 2){
numA++
numA = 20
println("numA == 2 => true")
numA
}else{
numA++
numA = 30
println("numA < 2 => true")
numA
}
println("numC => $numC")
输出结果:
numA == 2 => true numC => 20
二、when 表达式- 在 Kotlin 中已经废除掉了 Java 中的 switch 语句。而新增了 when(exp){} 语句。
- when 语句不仅可以替代掉 switch 语句,而且比 switch 语句更加强大
2.1 when 语句实现 switch 语句功能
when(5){
1 -> println("1")
2 -> println("2")
3 -> println("3")
5 -> println("5")
else -> {
println("error!")
println("0")
}
}
输出结果:
5
2.2 和逗号结合使用,相当于switch语句中的不使用break跳转语句
when(1){
// 即x = 1,2,3时都输出1。
1 , 2 , 3 -> println("1")
5 -> println("5")
else -> {
println("error!")
println("0")
}
}
输出结果:
1
2.3 条件可以使用任意表达式,不仅局限于常量
var num:Int = 5
when(num > 5){
true -> println("num > 5")
false -> println("num < 5")
else -> {
println("error!")
println("num = 5")
}
}
输出结果:
num < 5
2.4 检查值是否存在于集合或数组中
- (in) 在
- (!in) 不在
注意:只适用于数值类型
var arrayList = arrayOf(1,2,3,4,5)
when(1){
in arrayList.toIntArray() -> println("1 存在于 arrayList数组中")
in 0 .. 10 -> println("1 属于于 0~10 中")
!in 5 .. 10 -> println("1 不属于 5~10 中")
else -> {
println("error!")
println("都错了 哈哈!")
}
}
输出结果:
元素1
存在于 arrayList数组中
其中,符号( .. )
表示至的意思。如例子中的0 .. 10
就表示0至10
或者0到10
。
2.5 检查值是否为指定类型的值
- 是(is)
- 不是(!is)
when("abc"){
is String -> println("abc是一个字符串")
else -> {
println("abc不是一个字符串")
}
}
输出结果:
abc是一个字符串
2.6 不使用表达式的 when 语句
var array = arrayOfNulls(3)
when{
true -> {
for (i in array){
print(" $i \t")
}
}
else -> {}
}
输出结果:
null null null