CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Kotlin 语言入门/课时/控制流
RawBlame
课时目录12 节

Kotlin 语言入门

  1. 01Kotlin 是什么
  2. 02基础语法与类型
  3. 03控制流
  4. 04函数与 Lambda
  5. 05集合 API
  6. 06类与 OOP
  7. 07空安全
  8. 08协程
  9. 09JVM 与 Spring
  10. 10Android 与 Compose
  11. 11Ktor 服务端
  12. 12综合练习

控制流

if/when/for、安全 cast。

30 分钟

控制流

Kotlin 的控制流与 Java 相似但更表达力强:if 可作表达式返回值,when 替代 switch 且支持模式匹配,for/while 遍历区间与集合。

学习目标

  • 掌握 if 表达式、when 多分支与安全 cast
  • 熟练使用 for、while 与区间 ..、until
  • 理解 break、continue 与标签跳转

if 表达式

fun max(a: Int, b: Int): Int {
    return if (a > b) a else b
}

fun grade(score: Int): String {
    val label = if (score >= 90) "A"
                else if (score >= 60) "Pass"
                else "Fail"
    return label
}

fun main() {
    println(max(10, 20))       // 20
    println(grade(85))         // Pass
}

if 有返回值,可替代三元运算符 ? :(Kotlin 无三元运算符)。

when 表达式

fun httpStatus(code: Int): String = when (code) {
    200 -> "OK"
    404 -> "Not Found"
    in 400..499 -> "Client Error"
    in 500..599 -> "Server Error"
    else -> "Unknown"
}

fun describe(obj: Any): String = when (obj) {
    is String  -> "字符串,长度 ${obj.length}"
    is Int     -> "整数: $obj"
    is List<*> -> "列表,${obj.size} 个元素"
    else       -> "其他: ${obj::class.simpleName}"
}

fun main() {
    println(httpStatus(404))
    println(describe(listOf("a", "b", "c")))
}

when 无需 break;支持类型判断、区间、多条件合并。

循环与区间

fun main() {
    // 区间 1..5 含 5
    for (i in 1..5) {
        print("$i ")
    }
    println()

    // until 不含终点
    for (i in 0 until 5) {
        print("$i ")
    }
    println()

    // 步长
    for (i in 10 downTo 1 step 2) {
        print("$i ")
    }
    println()

    // 遍历集合
    val slugs = listOf("kt-intro", "kt-syntax", "kt-control")
    for ((index, slug) in slugs.withIndex()) {
        println("${index + 1}. $slug")
    }
}

.. 闭区间,until 左闭右开,downTo 递减,step 步长。

标签与 continue/break

fun findFirstEven(numbers: List<Int>): Int? {
    loop@ for (row in listOf(numbers, listOf(1, 3, 5))) {
        for (n in row) {
            if (n % 2 == 0) return n
            if (n < 0) break@loop
        }
    }
    return null
}

标签 @loop 可跳出外层循环,类似 Java 的 labeled break。

与 Java 对照

KotlinJava
if (a) x else y 作表达式三元 a ? x : y
when (x) { ... }switch (x) { ... }
1..10IntStream.rangeClosed(1, 10)
for ((i, v) in list.withIndex())传统 for + 索引
is String + smart castinstanceof + cast

练习

  • 用 when 实现 HTTP 状态码到中文描述的映射
  • 打印 1–10 的平方(用 for 与区间)
  • 对比 Java switch 与 Kotlin when 的 fallthrough 行为

小结

if/when 可作表达式,区间与 smart cast 让控制流更简洁。 下一课函数与 Lambda。见 kotlin-essentials。

加载本节练习…
← 上一课基础语法与类型下一课 →函数与 Lambda