fun main(args: Array<String>) {
var a = 10
if (a == 1) println("a == 1")
if (a == 10) println("a == 10")
if (a == 1) {
println("a == 1")
} else {
println("a != 1")
}
if (a == 1) {
println("a == 1")
} else if (a == 10) {
println("a == 10")
} else {
println("a != 1 && a != 10")
}
}
Kotlin 中没有Java 那样的三元表达式,但是可以使用 if-else 代替
注意:如果需要这种返回结果的表达式,那么必须要存在else
分支
fun main(args: Array<String>) {
var a = 10
var result1 = if (a == 10) "a = 10" else "a != 10"
var result2 = if (a == 10) {
var str = "a = 10"
str // 最后一行作为结果返回
}else{
var str = "a != 10"
str
}
println(result1)
println(result2)
}
when
定义具有多个分支的条件表达式。它类似于类似Java和C语言中的switch
语句。
fun main(args: Array<String>) {
var a = 10
when(a){
10 -> println("a is 10")
20 -> println("a is 20")
else -> {
println("a is not 10 or 20")
}
}
}
同样的,when 也可以作为表达式,类似三元表达式那样。
如果将when用作表达式,则else分支必须存在,除非编译器能推断出分支条件包含了所有可能的情况。
fun main(args: Array<String>) {
var a = 10
var str = when(a){
10 -> "a is 10"
20 -> "a is 20"
else -> {
"a is not 10 or 20"
}
}
println(str)
}
首先 Kotlin 提供了一种声明区间的方法,比如想要一个包含1、2、3 的区间,就可以这样声明:1..3
fun main(args: Array<String>) {
for(i in 1..3){
println(i)
}
}
同时,可以控制步长,也就是每次循环变量的增减。
比如 java 中的循环for (int i = 1,i <= 10,i + 2)
,那么 Kotlin 的步长step 2
就相当于i + 2
,具体如下
fun main(args: Array<String>) {
for (i in 1..10 step 2){
println(i)
}
}
那如果我们需要从10到1倒着进行遍历呢,那么就可以使用downTo
fun main(args: Array<String>) {
for (i in 10 downTo 1){
println(i)
}
}
fun main() {
var i = 100 //比如现在我们想看看i不断除以2得到的结果会是什么,但是循环次数我们并不明确
while (i > 0) { //现在唯一知道的是循环条件,只要大于0那么就可以继续除
println(i)
i /= 2 //每次循环都除以2
}
}
我们也可以反转循环判断的时机,可以先执行循环内容,然后再做循环条件判断
fun main() {
var i = 0 //比如现在我们想看看i不断除以2得到的结果会是什么,但是循环次数我们并不明确
do { //无论满不满足循环条件,先执行循环体里面的内容
println("Hello World!")
i++
} while (i < 10) //再做判断,如果判断成功,开启下一轮循环,否则结束
}
我们可以使用continue
关键字来跳过本轮循环,直接开启下一轮
我们可以使用break
关键字来提前终止整个循环
虽然使用break和continue关键字能够更方便的控制循环,但是注意在多重循环嵌套下,它只对离它最近的循环生效(就近原则)
如果我们需要控制外层循环,那么就需要为循环语句打上标记
fun main(args: Array<String>) {
outer@for (i in 1..10){
for(j in 1 .. 10){
if(i == 5) continue@outer
println("$i x $j = ${i*j}")
}
}
}