Kotlin - 分支与循环

简介: Kotlin - 分支与循环

本系列学习教程笔记属于详细讲解Kotlin语法的教程,需要快速学习Kotlin语法的小伙伴可以查看“简洁” 系列的教程

快速入门请阅读如下简洁教程:
Kotlin学习教程(一)
Kotlin学习教程(二)
Kotlin学习教程(三)
Kotlin学习教程(四)
Kotlin学习教程(五)
Kotlin学习教程(六)
Kotlin学习教程(七)
Kotlin学习教程(八)
Kotlin学习教程(九)
Kotlin学习教程(十)

imgKotlin - 分支与循环

#分支语句

Kotlin 中的分支语句有两种,分别是 if...elsewhen

#if 表达式

Kotlin 可以像 Java 那样,使用 if...else 语句,通过判断条件来修改变量的值:

var name = ""
if (local == "en") {
    name = "lqr"
} else {
    name = "吴彦祖"
}

但这种写法还不够简洁,Kotlin 对 if...else 进行发加强,支持 if表达式 ,可以对上述代码进行简化:

val name = if (local == "en") "lqr" else "吴彦祖"

Kotlin 中没有三元运算符,不过可以使用 if 表达式来处理。

#when 表达式

Kotlin 中的 when 相当于 Java 中的 switchwhen 语句用于处理多分支条件判断,代码更清晰:

val x = 5
when (x) {
    5 -> println("x is 5")
    is Int -> println("Hello $x")
    in 1..100 -> println("$x is in 1..100")
    !in 1..100 -> println("$x is not in 1..100")
    args[0].toInt() -> println("x == args[0]")
}

可以看到 when 的条件分支很强大,除了支持值判断,甚至还支持表达式判断。与 if表达式 一样,Kotlin 也支持 when表达式

val hero = when (local) {
    "en" -> "Hero"
    "zh" -> "英雄"
    "fr" -> "Un héros"
    "de" -> "Held"
    else -> "未知"
}
println(hero)

与 Java 的 switch 相比,Kotlin 的 when 更加强大:

  • 加强版 switch,支持任意类型
  • 支持纯表达式条件分支(类似 if)
  • when表达式 要求完备性,需要将所有情况都列出来

#循环语句

Kotlin 中的循环语句大体有两种:for循环while循环

#for 循环

基本写法:for(element in elements)...

for (arg in args) {
    println(arg)
}

for 循环背后的运行机制是先通过 args.iterator() 获取到迭代器 Iterator,再结合迭代器的 next()hasNext() 来处理数组中的元素,所以循环的关键点是 Iterator

Java 中 for 循环的原理也是迭代器,但不同的是,Java 的数组需要实现 Iterable<T> 接口,并实现iterator(),而 Kotlin 中则是任意类重写 operator fun iterator()

数组 Array 支持在 for 循环的同时获取索引值:

// 带索引的for循环
for ((index, value) in args.withIndex()) {
    println("$index : $value")
}

// 上面写法等价于下面写法
for (indexValue in args.withIndex()) {
    println("${indexValue.index} : ${indexValue.value}")
}

数组 ArraywithIndex() 方法返回的是 Iterable<IndexedValue<T>>,其中 IndexedValuedata class ,支持使用 () 提取属性:

public data class IndexedValue<out T>(public val index: Int, public val value: T)

#while 循环

除了 for 循环,Kotlin 还支持 while 循环,while 循环格式分两种,两者区别如下:

  • while:先判断再执行
  • do-while:先执行再判断
var x = 5
while (x > 0) {
    print("$x ") // 5 4 3 2 1
    x--
}

var x = 5
do {
    print("$x ") // 5 4 3 2 1
    x--
} while (x > 0)

#跳过和终止循环

Kotlin 也支持跳过和终止循环语句的指令,分别是:

  • continue :跳过当前循环
  • break :终止当前循环
val args = intArrayOf(1, 2, 3, 4, 5)
for (arg in args) {
    if (arg == 2) continue
    if (arg == 4) break
    print("$arg ") // 1 3
}

开发中也常用 return 来终止循环,但它与 break 不同的是,return 实际上是中止方法的执行。

当有多层循环嵌套需要根据条件 跳过或终止内外套循环语句时,可以使用标签:

val args = intArrayOf(1, 2, 3, 4, 5)
Outter@ for (arg in args) {
    println("outter: $arg")
    var i = arg
    print("inner: ")
    Inner@ while (i > 0) {
        if (arg == 2) break@Inner // 当外循环元素为2时,跳过while,进行下次for
        if (arg == 4) break@Outter // 当外循环元素为3时,直接跳出for
        print("$i ")
        i--
    }
    println()
}
相关文章
|
分布式计算 Java 数据安全/隐私保护
Kotlin 学习笔记(二)—— 数据类、枚举类、循环、常用集合及操作符的写法(下 )
Kotlin 学习笔记(二)—— 数据类、枚举类、循环、常用集合及操作符的写法(下)
62 0
|
4月前
|
Kotlin 索引
Kotlin中循环语句
Kotlin中循环语句
|
1天前
|
Java Kotlin 索引
Kotlin12 - 分支与循环
Kotlin 12- 分支与循环
10 2
|
8天前
|
Java Kotlin 索引
Kotlin教程笔记(8)- 分支与循环
Kotlin教程笔记(8)- 分支与循环
32 2
|
10天前
|
Java Kotlin 索引
Kotlin教程笔记(9)-分支与循环
Kotlin教程笔记(9)-分支与循环
26 0
|
2月前
|
Java Android开发 开发者
Kotlin 循环与函数详解:高效编程指南
高效编程实践 • 避免不必要的循环 - 尽量使用集合操作如 map、filter 来减少显式的循环。 • 使用尾递归优化 - 对于需要大量递归的情况,考虑使用尾递归以优化性能。 • 内联函数 - 对于传递 Lambda 表达式的函数,使用 inline 关键字可以减少运行时开销。 通过上述指南,您应该能够更好地理解 Kotlin 中的循环和函数,并能够编写更加高效和简洁的代码。Kotlin 的设计哲学鼓励开发者编写易于理解和维护的代码,而掌握循环和函数是实现这一目标的关键步骤。 如果您想了解更多关于 Kotlin 的循环和函数的信息,以下是一些官方文档和资源,它们可以提供额外的参考
41 1
|
2月前
|
Java Kotlin
Kotlin 循环与函数详解:高效编程指南
Kotlin中的循环结构让你能轻松遍历数组或范围内的元素。使用`for`循环结合`in`操作符,可以简洁地访问数组中的每个项,如字符串数组或整数数组。对于范围,可以用`..`来定义一系列连续的值并进行迭代。此外,Kotlin支持通过`break`和`continue`控制循环流程。函数则允许封装可复用的代码块,你可以定义接受参数并返回值的函数,利用简写语法使代码更加紧凑。例如,`myFunction(x: Int, y: Int) = x + y`简洁地定义了一个计算两数之和的函数。
45 1
|
2月前
|
安全 Java Android开发
Android Kotlin中如何优雅地退出循环?
本文介绍Kotlin中如何在`forEach`循环中提前退出的方法,包括使用`for`循环搭配`break`以及利用标签和`return@标签`的方式。此外,还探讨了标签与`return`、`break`和`continue`在不同场景下的应用,如嵌套循环控制、高阶函数中的提前退出及`inline`函数内的非局部返回等,帮助读者更好地掌握Kotlin的控制流技巧。
58 0
|
4月前
|
Kotlin
Kotlin流程控制、循环
Kotlin流程控制、循环
|
Java Kotlin
Kotlin 学习笔记(二)—— 数据类、枚举类、循环、常用集合及操作符的写法(上)
Kotlin 学习笔记(二)—— 数据类、枚举类、循环、常用集合及操作符的写法(上)
54 0