【if else】
作为表达式使用会返回一个值,因此不需要再用Java中的三元运算符了
val a = 1
val b = 2
//通常用法
if (a < b)
max = a
else{
max = b
print("max赋值了b")
}
//作为表达式,取代三元运算符
max = if (a < b) a else b
//赋值给变量,需要有else,赋值的语句要放在最后一行
max = if (a < b){
a
}else{
print("...")
b //赋值放在最后一行
}
【when】
用来替代 Java中 的 switch,只要代码中包含 else if 分支都建议换成 when 表达式
//通常用法
when (max) {
1,3,5,7,9 -> print("max是单数")
!in 20..30 -> print("max不在20-30之间") //可以检测一个值在或者不在一个区间或者集合中
Integer.parseInt("100") ->{ //可以用任意表达式(而不只是常量)作为分支条件
print("max的值是100")
}
}
//作为表达式需要有else(相当于default),可以是代码块,要放到最后一行
val max = 2
val num = when (max){
1 -> 1
2 -> {
println("...")
}
}
print(num) //打印2
fun num2Chinese(num:Int): String{
return when (num){
1 -> "壹"
2 -> "贰"
3 -> "叁"
else -> "无对应文字"
}
}
//可以用来取代 if ,else if链,如果不提供参数,当一个分支的条件为 ture 时则执行该分支
when {
max == 1 -> print("max值为1")
num != 2 -> peint("num值不为2")
else -> print("都不满足")
}
【range】
( a , b ),开区间,不含首尾
[ a , b ],闭区间,包含首尾
关键字 | 名称 | 用法 | 值 |
.. | 闭区间 | val range1 = 1..10 | 1,2,3,4,5,6,7,8,9,10 |
val range2 = 10..1 | 区间为空什么都不返回 | ||
until | 左闭右开区间 | val range3 = 1 until 10 | 1,2,3,4,5,6,7,8,9 |
step | 步进 | val range4 = 1..10 step 2 | 1,3,5,7,9 |
down To | 反向 | val range5 = 10 down To 1 | 10,8,6,4,2 |
in | 在区间里 | val boolean1 = 5 in range1 | true,5在区间里 |
!in | 不在区间里 | val boolean = 5 !in 1..10 | false,5在区间里 |
//整型和字符Range可以使用for()迭代,小数Range只能进行in/!in操作
val intRange = 1..10
val num = 5
for (i in intRange) print("$i,") //写法一,打印:1,2,3,4,5,6,7,8,9,10
for (i in 1..10) print("$i,") //写法二,打印:1,2,3,4,5,6,7,8,9,10
val boolean1 = num in intRange //true,5在区间里
val boolean2 = 5 !in 1..10 //false,5在区间里
if (num in intRange){
print("$num 在范围里") //打印这个
}else if (num in 10..20){
print("$num 不在范围里")
}
val charRange = 'a'..'z' //迭代打印:a,b,c,d,
val longRange = 1L..10L //迭代打印:1,2,3,4,5,6,7,8,9,10
val doubleRange = 1.1..2.2
val floatRange = 1.1F..2.2F