作者简介:CSDN博客专家、华为云享专家认证
系列专栏:Kotlin 初学者
学习交流:三人行必有我师焉;择其善者而从之,其不善者而改之。
程序的逻辑控制
程序的执行语句主要分为三种:
- 顺序语句:一条接着一条顺序执行下去,程序代码默认就是顺序语句。
- 条件语句:if 和 when
- 循环语句:for循环 和 while循环
条件语句
Kotlin 中的条件语句主要有两种实现方式:if 和 when。
if
Kotlin 编程语言流程控制语句通过程序设定一个或多个条件语句来设定:
- 在条件为 true 时执行指定程序代码
- 在条件为 false 时执行其他指定代码
实践
fun main() { val number = 83 val str = if (0 < number && number <= 59) { //0-59范围 "$number 不及格" } else if (59 < number && number <= 75) { "$number 及格" } else if (75 < number && number <= 85) { "$number 良好" } else { "$number 优秀" } println(str) }
从上面可以看出,Kotlin 中的 if 语句跟 Java中的 if 语句相差不大。
Kotlin if 额外功能:
if 有个返回值,返回值就是语句每一个条件中最后一行代码的返回值。如上面例子:val str = "良好"
if..in
警告:两次比较应转换为 range 检查
range 表达式
in x..y,in关键字用来检查某个值是否在指定区间x-y(包含y)之内。
实践
1. //if..in //in x..y,in关键字用来检查某个值是否在指定区间x-y(包含y)之内。 val strRange = if (number in 1..59) { //0-59范围 "$number 不及格" } else if (number in 60..75) { "$number 及格" } else if (number in 76..85) { "$number 良好" } else { "$number 优秀" } println(strRange)
运行结果跟上面一致,但是代码感觉简洁了很多。
if..!in
!in x..y,in关键字用来检查某个值是否不在指定区间x-y(包含y)之内。
val number2 = 81 //这个就是取反了。 //!in x..y,in关键字用来检查某个值是否不在指定区间x-y(包含y)之内。 if (number2 !in 70..80){ println("$number2,不在70-80范围") }else{ println("$number2,在范围") }
when
- 允许你编写条件式,在某个条件满足时,执行对应的代码
- 只要代码包含else if分支,都建议改用when
根据上面的实例,对else if分支调整。
实践
fun main() { val number = 70 val s = when(number){ in 0..59->"不及格" in 60..75->"及格" in 76..85->"良好" else -> "优秀" } println(s) }
这个就类似Java中的switch-case。但是switch-case那么繁琐,也不需要加break。
循环语句
Java中主要有两种循环语句:for 循环和 while 循环。
Koltin也提供了这两种循环。
- while循环不管在语法还是在使用技巧上都和Java基本一致。
- for循环改动比较大
- for-i在Kotlin中被移除。
- for-each循环被加强,变成for-in循环。
for-in循环
实践
//for-in简单循环,区间范围[3,8] for (number in 3..8){ println(number) }
until 关键字
使用 until关键字 创建一个左闭右开的区间。
实践
//使用until关键字创建一个左闭右开的区间。 //区间范围[3,8) for (number in 3 until 8){ println(number) }
step 关键字
使用 step 关键字跳过一些元素。for-in循环每次执行循环时会在区间范围递增1,如Java中 for-i 的i++。
实践
//使用 step 关键字跳过一些元素。 //如Java中 for-i 的i = i+2。 for (number in 3 until 8 step 2) { println(number) } println("-------") //使用 step 关键字跳过一些元素。 //如Java中 for-i 的i = i+3。 for (number in 3 until 8 step 3) { println(number) }
downTo 关键字
使用 downTo 关键字创建一个降序区间。
//使用 downTo 关键字创建一个降序区间。 //区间范围[8,3] for (number in 8 downTo 3) { println(number) }
foi-in 循环集合
有关集合的创建咱们后面一起学哈。
//for-in集合 val items = listOf("字节", "腾讯", "阿里巴巴", "百度") for (item in items) { println(item) } println("-------") for (index in items.indices) { println("item at $index is ${items[index]}") }
while循环
while简单循环
实践
//while循环 var num = 1 while (num<5){ println("$num,while循环") num++ }
do...while循环
do…while 循环 对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
实践
//do..while循环 var num = 5 do { println("$num,do..while循环") num-- } while (num > 0)
Kotlin 控制语句
- return : 默认从最直接包围它的函数或者匿名函数返回
- break : 终止使用它的循环
- continue : 继续下一次使用它的循环
return 语句
默认从最直接使用它的函数或者匿名函数返回。这个跟Java类似。
实践
fun main() { //return println(userInfo("ShuaiCi",18)) } fun userInfo(name:String,age:Int):String{ //具名函数这里要加return return "$name-今年:$age" }
break 语句
终止使用它的循环
实践
//break for (number in 3..8) { if (number > 6) break//number>6跳出循环 println(number) }
continue 语句
继续下一次使用它的循环
实践
for (number in 3..8) { println("$number,start") if (number ==4 ) continue//跳过本次循环,直接执行下一次循环 if (number > 6) break//number>6跳出循环 println("$number,end") }
小结
优先使用for..in,简单好用,足够覆盖大部分场景。
如果特殊场景无法实现,那么就使用while循环进行补充即可。
看完了上手练练,光看短时间能记住,时间长不用就忘记了,还要再看一遍,还不如自己上手练一下。