3:kotlin 逻辑控制(Control flow)

像其他语言一样,kotlin也有循环和逻辑控制

条件判断(Conditional expressions)

kotlin使用ifwhen来进行条件判断

如果纠结选择if还是when,建议使用when,因为它更能提高程序的健壮性

if

普通写法

kotlin 复制代码
fun main() {
    val d: Int
    val check = true

    if (check) {
        d = 1
    } else {
        d = 2
    }
 
    println(d) // 1
}

简单写法

kotlin中没有? :形式的三元表达式

kotlin 复制代码
fun main() {
    val a = 1
    val b = 2
    val res = if (a > b) a else b
    println(res) // 2
}

when

当有多个条件分支时使用when

条件和执行的逻辑用->分割

kotlin 复制代码
fun main() {
    val obj = "Hello"

    when (obj) {
        "1" -> println("One")   // 如果 obj == "1",执行当前分支
        "Hello" -> println("Greeting")  // 如果 obj == "Hello",执行当前分支
        else -> println("Unknown")  // 如果上边的所有分支都不符合,则执行当前分支
    }
    // Greeting
}

注意执行的顺序是从上而下,如果有一个条件满足了则不会进行下边的判断了

接收返回值的when

kotlin 复制代码
fun main() {
    val obj = "Hello"

    val result = when (obj) {
        "1" -> "One"
        "Hello" -> "Greeting"
        else -> "Unknown"
    }
    println(result) // Greeting
}

一般情况下,else分支是必须的,除非编译器检测到上边的条件覆盖了所有可能的情况

除了上边的匹配字符串,还可以使用条件表达式

kotlin 复制代码
fun main() {
    val temp = 18

    val description = when {
        temp < 0 -> "very cold"
        temp < 10 -> "a bit cold"
        temp < 20 -> "warm"
        else -> "hot"
    }
    println(description) // warm
}

范围(Range)

学习循环之前先来看一下怎么创建一个Range

常见的创建Range的方式是使用..

  • 1..4 - 1,2,3,4
  • 1..<4 - 1,2,3
  • 4 downTo 1 - 4,3,2,1
  • 1..5 step 2 - 1,3,5
  • 'a'..'d' - 'a','b','c','d'
  • 'z' downTo 's' step 2 - 'z','x','v','t'

循环(Loops)

编程中最常见的两种循环结构是forwhile。使用for迭代一系列值并执行操作。使用while继续操作,直到满足特定条件。

for

kotlin 复制代码
fun main() {
    for (number in 1..5) {
        print(number)
    }
// 12345
}
kotlin 复制代码
fun main() {
    val cakes = listOf("carrot", "cheese", "chocolate")
    for (cake in cakes) {
        println("Yummy, it's a $cake cake!")
    }
//    Yummy, it's a carrot cake!
//    Yummy, it's a cheese cake!
//    Yummy, it's a chocolate cake!
}

while

while有两个运行方式,一种是简单的while循环

kotlin 复制代码
fun main() {
    var cakesEaten = 0
    while (cakesEaten < 3) {
        println("Eat a cake $cakesEaten")
        cakesEaten++
    }
//    Eat a cake 0
//    Eat a cake 1
//    Eat a cake 2
}

另一种是do-while

kotlin 复制代码
fun main() {
    var cakesBaked = 0
    do {
        println("Bake a cake $cakesBaked")
        cakesBaked++
    } while (cakesBaked < 3)
//    Bake a cake 0
//    Bake a cake 1
//    Bake a cake 2
}

简单while先判断条件,如果满足再去执行{}内中内,直到条件不满足为止。do-while先执行一次{}中的内容,再去判断条件。

相关推荐
JMchen12317 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
儿歌八万首20 小时前
硬核春节:用 Compose 打造“赛博鞭炮”
android·kotlin·compose·春节
消失的旧时光-19431 天前
从 Kotlin 到 Dart:为什么 sealed 是处理「多种返回结果」的最佳方式?
android·开发语言·flutter·架构·kotlin·sealed
有位神秘人1 天前
kotlin与Java中的单例模式总结
java·单例模式·kotlin
Jinkxs1 天前
Gradle - 与Groovy/Kotlin DSL对比 构建脚本语言选择指南
android·开发语言·kotlin
&有梦想的咸鱼&1 天前
Kotlin委托机制的底层实现深度解析(74)
android·开发语言·kotlin
golang学习记1 天前
IntelliJ IDEA 2025.3 重磅发布:K2 模式全面接管 Kotlin —— 告别 K1,性能飙升 40%!
java·kotlin·intellij-idea
gjxDaniel3 天前
Kotlin编程语言入门与常见问题
android·开发语言·kotlin
野生技术架构师3 天前
Java 21虚拟线程 vs Kotlin协程:高并发编程模型的终极对决与选型思考
java·开发语言·kotlin
言之。3 天前
Kotlin快速入门
android·开发语言·kotlin