Kotlin控制流、返回与跳转

时间:2021-02-17 20:07:39

本节主要学习了条件表达式if、while、when、for以及break、continue、return的使用,其中when有多种用法,可以对照java中switch使用

里面的注释很详细,详见代码

package net.edaibu.kotlintest

/**
* Created by ${GEQIPENG} on 2017/5/22.
* 流程控制
*/
fun main(args: Array<String>) {

println("if表达式——————————————————————————————————————————————————————")

//if表达式使用

val a = 1
val b = 2
if (a > b) {
println("max is $a")
} else {
println("max is $b")
}

//简化版
if (a > b) println(a) else println(b)

//第三种写法
val max = if (a > b) {
a
} else {
b
}
println("max is $max")
println("when表达式——————————————————————————————————————————————————————")

//写法一
fun getXValue(x: Int): String =
when (x) {
1 -> "北京"
2 -> "上海"
3 -> "广州"
else -> {
"x is unKnown"

}
}
println(getXValue(1))
println(getXValue(5))

//写法二
fun getXValue2(x: Int): String =
when (x) {
1, 2, 3 -> "北京"
4, 5, 6 -> "上海"
7, 8, 9 -> "广州"
else -> {
"x is unKnown"

}
}
println(getXValue2(1))
println(getXValue2(5))
println(getXValue2(100))

//写法三 通过in进行范围判断 1..5即x>=1&&x<=5

fun getXValue3(x: Int): String =
when (x) {
in 1..5 -> "在1到5之间"
in 6..10 -> "在6到10之间"
else -> {
"out of boundary"
}
}
println(getXValue3(5))
println(getXValue3(11))

//写法四 看lsit2惊讶的发现 list2中数据类型可以包含多种,但是输出的时候会区分数据的类型
println("写法四——————————————————————————————————————————")
val list1 = listOf(1, 2, 3, 4, 5)
val list2 = listOf("6", "7", 8, 9, 10)
fun getXValue4(x: Int): String =
when {
x in list1 -> "in list1"
x in list2 -> "in list2"
else -> {
"not in list1 or list2 "
}
}
println(getXValue4(5))// 输出 in list1
println(getXValue4(6))//输出 not in list1 or list2

println("for循环表达式——————————————————————————————————————————————————————")
//for循环写法一:直接遍历
val ItCompanies = listOf("Baidu", "Alibaba", "Tencent", "Sina")
for (company in ItCompanies) {
println(company)
}
println("for循环二____________________________")
//for循环写法二,通过索引
for (i in ItCompanies.indices) {
println(ItCompanies[i])
}

println("while表达式使用————————————————————————————————————————————")

//注意遍历的时候index要进行动态变化,所以要定义为变量var符号表示
var index = 0

while (index < ItCompanies.size) {
println(ItCompanies[index])
index++
}

println("do..while 表达式用法______________________")
//注意do..while只执行一次
var doIndex = 0
do {
println(ItCompanies[doIndex])
doIndex++
break
} while (doIndex < ItCompanies.size)



println("返回与跳转的使用————————————————————————————————————————————————————————")
//返回与跳转使用

val valueList = listOf("Huawei", "Meizu", "Xiaomi", "Iphone")
//此处引用了一个新的符号loop@ 表示循环的意思

//break使用
loop@ for (i in 1..10) {
if (i == 5) {
break
}
println(i)//输出1,2,3,4
}

//continue使用
println("continue使用————————————————————————————————")
loop@ for (j in 1..8) {
if (j % 2 == 0) {
continue
}
println(j) //输出1,3,5,7
}

println("return使用————————————————————————————————————————")

loop@ for (item in valueList) {
if (item in valueList) {
println("item in valueList")
return
}
}


}