Kotlin基础语法之控制流

来源:互联网 发布:通达信mac版划线工具 编辑:程序博客网 时间:2024/09/21 06:17

原文链接:点击打开链接

摘要: Kotlin 的控制流与 Java 的控制流基本相同,只是使用 when 代替了 switch。当然,在 Kotlin中,if 和 when 不仅仅可以作为语句使用,还可以作为表达式使用,这些内容会在本节详细讲解。

Kotlin 的控制流与 Java 的控制流基本相同,只是使用 when 代替了 switch。当然,在 Kotlin中,if 和 when 不仅仅可以作为语句使用,还可以作为表达式使用,这些内容会在本节详细讲解。

条件语句

在 Kotlin 中,if 语句本身就是表达式,有返回值,因此,Kotlin 并不需要像 Java 那样提供三元操作符(condition ?then: else)。下面是传统的 if 条件语句的用法。

var a:Int = 20var b = 30var max: Intif (a < b) max = bvar min: Intif (a > b) { min = a} else { min = b} 

如果想将 if 语句作为表达式使用,那么可以按下面的代码形式编写 if 语句。如果 if 或 else后面是代码块,那么最后一个表达式是返回值。

var a = 20var b = 30val max = if (a > b) a else bprintln(max)// if else 后面是一个代码块,最后一个表达式将作为返回值val min = if (a > b) { print("Choose a") a // 返回值} else { print("Choose b") b // 返回值} 

when 语句

在 Kotlin 中,when 替换了 C 语言风格的 switch 语句。标准的 when 语句的用法如下:

var x = 1when (x){ 1 -> { println("x == 1") println("hello world") } 2 -> print("x == 2") else -> { print("x is neither 1 nor 2") }} 

使用 when 语句时,应注意以下几点:

  • when 语句会根据传入的值(这里是 x)寻找第一个满足条件的分支,找到后执行分支的语句。
  • 如果分支中多于一条语句,要用{…}。
  • 满足条件的分支执行后,会自动终止 when 语句的执行,因此,并不需要像 switch 语句那样每一个 case 语句都加上 break。

when 与 if 一样,既可以作为语句使用,也可以作为表达式使用。如果是后者,when 语句的第一个满足条件的分支的最后一个表达式就是 when 表达式的返回值。

var x = 1var m = when (x) { 1 -> { println("x == 1") 20 } 2 -> { print("x == 2") 60 } else -> { print("x is neither 1 nor 2") 40 }}println(m) // m 的值是 20 

如果多个分支条件执行的代码都一样,可以在一个分支用逗号(,)分隔多个条件,代码如下:

var x = 1when (x) { 1,2 -> { println("已经符合条件") } 3 -> { println("不符合条件") } else -> { println("条件未知") }} 

如果要执行相同代码的条件比较多,或无法枚举,可以使用 in 关键字确定一个范围,代码如下:

var n = 25when(n){ in 1..10 ->println("满足条件") in 11.. 20 ->println("不满足条件") !in 30..60 ->println("hello world") // !in 表示不在这个范围内 else->println("条件未知")} 

其实,when 中的分支条件不仅可以是常量,还可以是任意表达式。例如,下面的代码分支条件就是一个函数。

fun getValue(x:Int):Int{ return x * x}fun main(args: Array<String>){ var n = 4 when(n) { getValue(2)->println("满足条件") getValue(3)->println("不满足条件") else->println("条件未知") }} 

for 循环

在 Kotlin 中,for 循环可以直接枚举集合中的元素,也可以按集合索引来枚举元素。下面的语法是使用迭代器(iterator)枚举集合中的所有元素。

for (item in collection) print(item) 

下面的代码使用这种方式枚举了数组中的所有元素值。

var arr = intArrayOf(2,4,6,8,10)for (item: Int in arr) { println(item)} 

下面的代码使用索引枚举数组中的元素值。

var arr = intArrayOf(2, 4, 6, 8, 10)for (i in arr.indices) { println("arr[$i] = " + arr[i])} 

执行这段代码,会输出如下结果。

arr[0] = 2arr[1] = 4arr[2] = 6arr[3] = 8arr[4] = 10

其实要想输出上面的结果,还有更简单的写法,就是在循环时,同时对索引和元素值进行
循环,代码如下:

var arr = intArrayOf(2, 4, 6, 8, 10)// index 是索引,value 是当前的数组元素值for ((index, value) in arr.withIndex()) { println("arr[$index] = " + value)} 

while 循环

Kotlin 中的 while 循环和 Java 中的 while 循环是一样的,也分为 while 和 do…while,代码如下:

var i= 0while(i++ < 10){ println(i)}do{ if(i == 6) continue println(i) if(i == 5) break}while(--i > 0)

do…while 循环中使用了 continue 和 break,这两个语句在 for 循环中同样可以使用。continue 是为了忽略当前循环 continue 后面的所有语句,继续从下一次循环开始。break 是为了终结当前循环,并跳出循环。这一点和 Java 完全一样。

https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=n7gh3gne&utm_source=n7gh3gne

我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。




原创粉丝点击