kotlin学习总结之三 流程控制

一.判断结构。

if语句。

  1. 传统写法(同Java写法一样)
   var a: Int = 1
   var b: Int = 2
   var max: Int = 0
//基本用法
 if (a > b) {
            max = a
    } else {
            max = b
    }
 
  1. 作为表达式使用。也就是说,整个 if 表达式(包括 else 部分)最终 会返回一个值,因此 if 可以代替 Java 中的三目运算符。(Kotlin中没有java中的三元表达式)
    var age = 20
    // 将 if 表达式赋值给 str 变量
    var str = if (age > 20) "age大于20" 
        else if (age < 20) "age小于20" else "age等于20"
    println(str)

注意:Kotlin中没有java的中的2>1?2:1这样的三元表达式。

二.选择结构。

when表达式。

when 类似其他语言的 switch 操作符。
在 when 中,else 如同 switch 的 default。如果其他分支都不满足条件将会走else 分支,如果很多分支需要用相同的方式处理,则可以把多个分支条件放在一起,用逗号分隔。

 when (a) {
            1 -> print("x == 1")
            2 -> print("x == 2")
            3, 4 -> print("x == 3 or x == 4")
            in 5..9 -> print("x in [5..9]")
            !in 10..20 -> print("x is outside the range")
            else -> {
                print("x is funny")
            }
        }

when也可以用来取代if-else-if链。如果不提供参数,所有的分支条件都是简单的布尔表达式,而当一个分支的条件为真时则执行该分支:

when {
    x.isOdd() -> print("x is odd")
    x.isEven() -> print("x is even")
    else -> print("x is funny")
}

三循环结构。

for循环.

    val stringArrays : Array = arrayOf("hello","kotlin","hello","android")
    for (item in stringArrays){
        println(item)
    }

while 与 do...while 循环.

while是最基本的循环

while( 布尔表达式 ) {
  //循环内容
}

do…while 循环 对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

do {
       //代码语句
}while(布尔表达式);

四.流程控制.

  • break。终止最直接包围它的循环,和java没啥区别。
  • continue。继续下一次最直接包围它的循环,和java没啥区别。
  • return。默认从最直接包围它的函数或者匿名函数返回。

使用break结束循环

需要在某种条件出现时强行中止循环,而不是等到循环条件为false时才退出循环,可以使用break来完成此功能。

break用于完全结束一个循环,跳出循环体。

for (i in 0..10) {
    println("i的值是:${i}")
    if (i == 2) {
        //结束循环
        break
    }
}

输出结果:

i的值是:0
i的值是:1
i的值是:2
使用break语句不仅可以结束其所在的循环,还可以直接结束其外层循环。需要在break后紧跟一个标签,用于标识一个外层循环。

Kotlin中的标签就是一个紧跟着@的标识符。Kotlin中的标签只有放在循环语句或switch语句之前才起作用。

    //外层循环
    outer@ for (i in 0..10) {
        for (j in 0 until 3) {
            println("i的值为:${i},j的值为:${j}")
            if (j == 1) {
                //跳出outer标签所标识的循环
                break@outer
            }
        }
    }

输出结果:
i的值为:0,j的值为:0
i的值为:0,j的值为:1
break后的标签必须是一个有效的标签,即这个标签必须在break语句所在的循环之前定义,或在其所在循环的外层循环之前定义。

使用continue忽略本次循环的剩下语句

continue和break有点类似,区别是:

continue只是忽略本次循环的剩下语句,接着开始下一次循环,并不会中止循环;
break则是完全中止循环本身。
    for (i in 0 until 3) {
        println("i的值是${i}")
        if (i == 1) {
            //忽略本次循环的剩下语句
            continue
        }
        println("continue后的输出语句")
    }

输出结果:

i的值是0
continue后的输出语句
i的值是1
i的值是2
continue后的输出语句
continue也可以紧跟一个标签,用于直接跳过标签所标识循环的档次循环剩下语句,重新开始下一次循环。

   //外层循环
    outer@ for (i in 0 until 5) {
        //内层循环
        for (j in 0 until 3) {
            println("i的值为:${i},j的值为:${j}")
            if (j == 1) {
                //忽略outer标签所指定的循环中档次循环剩下的语句
                continue@outer
            }
        }
    }

输出结果:

i的值为:0,j的值为:0
i的值为:0,j的值为:1
i的值为:1,j的值为:0
i的值为:1,j的值为:1
i的值为:2,j的值为:0
i的值为:2,j的值为:1
i的值为:3,j的值为:0
i的值为:3,j的值为:1
i的值为:4,j的值为:0
i的值为:4,j的值为:1

使用return结束方法

return用于从最直接包围它的方法、函数或者匿名函数返回。

当函数或方法执行到一条return语句时,这个函数或方法将被结束。

fun main(args: Array) {
    test()
}

fun test(){
    for (i in 0 until 10) {
        println("i的值是:${i}")
        if (i == 1) {
            return
        }
        println("return后的输出语句")
    }
}

输出结果:

i的值是:0
return后的输出语句
i的值是:1
return并不是专门用于控制循环结构的关键字,但通过return语句确实可以结束一个循环。
与continue和break不同的是,return直接结束整个函数或方法,而不管return处于多少层循环之内。

你可能感兴趣的:(kotlin学习总结之三 流程控制)