一、作用
必须的
二、概念
1.顺序语句
2.条件语句
Kotlin 中的条件语句分两种:if
、when
。
(1)if
Kotlin 中的if
和 Java 中的几乎没有区别。
fun largerNumber(num1: Int, num2: Int): Int {
var value = 0
if (num1 > num2) {
value = num1
} else {
value = num2
}
return value
}
只有一点:Kotlin 中的
if
语句可以有返回值,返回值就是if
语句中每一个条件中最后一行代码的返回值。
简化为:
fun largerNumber5(num1: Int, num2: Int): Int {
return if (num1 > num2) {
num1
} else {
num2
}
}
再利用语法糖,当函数中只有一行代码时进行化简,简化为:
fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) {
num1
} else {
num2
}
简化为:
fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) num1 else num2
(2)when
when
类似于 Java 中的switch
,但它比switch
强大得多。
Java 中switch
的缺点:首先:Java 中的switch
只能传入整型或短于整型的变量作为条件,JDK 1.7 之后增加了对字符串变量的支持,但如果你的逻辑判断使用的并非上述几种类型的变量,那么switch
并不适合你。其次:每个case
之后都要主动加一个break
,否则会依次执行下面的case,从而导致一些 bug。
Kotlin 解决了上述痛点,还增加了许多更加强大的新特性。
when
允许传入任意类型的参数,当你的执行逻辑只有一行代码时,{}
可以省略
匹配值 -> {执行逻辑} // 当你的执行逻辑只有一行代码时,{} 可以省略
一个查询成绩的方法
利用『单行代码函数』语法糖简化为:
fun getScore(name: String) = if (name == "Tom") {
86
} else if (name == "Jim") {
77
} else if (name == "Jack") {
100
} else if (name == "Lily") {
95
} else {
0
}
使用 when 语法简化为:
fun getScore2(name: String) = when (name) {
"Tom" -> 86
"Jim" -> 77
"Jack" -> 100
"Lily" -> 95
else -> 0
}
when
允许类型匹配
fun checkNumber(num: Number) {
when (num) {
is Int -> println("number is Int")
is Double -> println("number is Double")
else -> println("number is not support")
}
}
when
语句中还有一种不带参数的用法,虽然这种用法可能不太常用,但有时能发挥很强的拓展性。例如:『假设实现所有名字以 Tom 开头的人,分数都是86』
fun getScore3(name: String) =
when {
name.startsWith("Tom") -> 86
name == "Jim" -> 77
name == "Jack" -> 100
name == "Lily" -> 95
else -> 0
}
3.循环语句
(1)while
和 Java 中的一样
(2)for
Java 中最常用的
for-i
直接被废弃掉了,for-each
被 Kotlin 大幅度得加强,变成了for-in
循环。
fun forTest() {
for (i in 0..10) {
println(i)
}
}
fun forTest2() {
for (i in 0 until 10 step 2) {
println(i)
}
}
fun forTest3() {
val rang = 10 downTo 1
for (i in 10 downTo 1) {
println(i)
}
}
4. 小知识点
(1)is
相当于 Java 中的instanceof
(2)Number
这是 Kotlin 内置的一个抽象类,Int
、Double
、Float
等都是它的子类。
(3)==
Kotlin 中判断字符串或对象是否相等可以直接使用==
关键字
(4)..
创建区间
- 两端闭区间
[0,10]
val range=1..10
- 左闭右开区间
[0,10)
val range = 0 until 10
- 降序空间
[1,10]降序
val rang = 10 downTo 1
网友评论