Kotlin 条件控制(手把手讲解)

Kotlin 条件控制:让程序学会“判断”

你有没有想过,为什么电脑能做那么多复杂的事情?其实背后的核心逻辑之一,就是“判断”。就像我们在生活中会说:“如果下雨,我就带伞”,这种“如果……就……”的逻辑,正是程序执行流程的起点。Kotlin 条件控制,就是让你的代码具备这种“思考能力”的关键工具。

在 Kotlin 中,条件控制主要通过 ifelse ifelsewhen 表达式来实现。它们就像是程序的“大脑”,根据不同的情况做出不同的决策。掌握它们,你就不再只是写死的代码,而是能写出灵活、智能的程序。

接下来,我们一步步拆解这些语法,结合实际案例,带你从入门到熟练运用 Kotlin 条件控制。


if 语句:最基础的判断逻辑

if 是 Kotlin 中最基础的条件控制结构。它的语法非常直观,就像在说:“如果满足某个条件,就执行一段代码”。

val age = 18

if (age >= 18) {
    println("你已成年,可以投票了!")
}

这段代码的意思是:如果 age 大于等于 18,就打印“你已成年,可以投票了!”。注意,括号里的 age >= 18 是一个布尔表达式,结果为 truefalse

深入理解:条件表达式的返回值

Kotlin 的 if 不仅能作为语句使用,还能作为表达式返回值。这在其他语言中比较少见,却是 Kotlin 的一大亮点。

val age = 16
val canVote = if (age >= 18) "可以投票" else "还不能投票"

println(canVote) // 输出:还不能投票

这里,if 表达式根据条件返回了字符串,赋值给 canVote。这意味着你可以把整个 if 当作一个“值”来用,非常灵活。

💡 小贴士:在 Kotlin 中,if 表达式必须有 else 分支,否则编译会报错。这是为了强制你处理所有可能的情况,避免逻辑漏洞。


else if 与 else:多条件分支处理

当需要判断多个条件时,else if 就派上用场了。它允许你在第一个条件不满足时,尝试下一个条件,直到匹配为止。

val score = 85

if (score >= 90) {
    println("成绩优秀,A 等")
} else if (score >= 80) {
    println("成绩良好,B 等")
} else if (score >= 70) {
    println("成绩中等,C 等")
} else {
    println("成绩不及格,需要努力")
}

这段代码模拟了成绩等级划分。注意 else if 的缩进格式,有助于阅读。程序会从上到下依次判断,一旦某个条件为 true,就执行对应的代码块,并跳过后续所有分支。

形象比喻:像选择题一样“逐个排除”

你可以把 if-else if-else 想象成一个选择题答题流程:

  • 如果第一项正确,就选它,不再看后面的选项。
  • 如果第一项错,就看第二项,依此类推。
  • 最后一个 else 就是“以上都不对”的兜底选项。

when 表达式:Kotlin 的“switch”升级版

在 Java 中,switch 语句只能匹配常量值,而且容易出错。Kotlin 的 when 表达式则是 switch 的现代化、更安全的替代方案,功能强大且语法简洁。

基本用法:匹配值

val dayOfWeek = 3

when (dayOfWeek) {
    1 -> println("星期一")
    2 -> println("星期二")
    3 -> println("星期三")
    4 -> println("星期四")
    5 -> println("星期五")
    6 -> println("星期六")
    7 -> println("星期日")
    else -> println("无效的日期")
}

这里的 when 会根据 dayOfWeek 的值,匹配对应的分支。注意,每个分支使用 -> 连接,代码块用大括号包裹。

更强大的匹配能力:支持范围与类型判断

when 不仅能匹配具体值,还能匹配范围、集合,甚至类型。

val number = 45

when (number) {
    in 0..10 -> println("数字在 0 到 10 之间")
    in 11..50 -> println("数字在 11 到 50 之间")
    in 51..100 -> println("数字在 51 到 100 之间")
    else -> println("数字超出范围")
}

in 0..10 表示“在 0 到 10 的范围内”,.. 是 Kotlin 的范围操作符。这比写一堆 if (x >= 0 && x <= 10) 简洁多了。

类型匹配:动态判断变量类型

val value: Any = "Hello"

when (value) {
    is String -> println("这是一个字符串,内容是:$value")
    is Int -> println("这是一个整数:$value")
    is Double -> println("这是一个浮点数:$value")
    else -> println("未知类型")
}

is 关键字用于判断类型。当 valueString 时,就进入对应的分支。这在处理多态对象时非常实用。


条件控制中的布尔表达式:逻辑的基石

条件控制的核心是布尔表达式。它们的结果只能是 truefalse,是程序“判断”的依据。

常见布尔运算符

运算符 含义 示例
&& 逻辑与(AND) a > 0 && b < 10
` `
! 逻辑非(NOT) !isAdult
val isStudent = true
val isOver18 = false

if (isStudent && isOver18) {
    println("你是成年学生,可以申请助学金")
} else if (isStudent || isOver18) {
    println("你至少满足一个条件")
} else {
    println("你既不是学生,也不成年")
}

&& 表示“两个条件都必须成立”;|| 表示“只要有一个成立”;! 用于取反。

实践建议:尽量避免嵌套过深的条件判断,可以通过提前返回或提取布尔变量来简化逻辑。


实际案例:用户登录系统

我们来做一个完整的 Kotlin 条件控制实战案例:模拟用户登录流程。

fun login(username: String, password: String): String {
    // 1. 检查用户名是否为空
    if (username.isEmpty()) {
        return "用户名不能为空"
    }

    // 2. 检查密码长度
    if (password.length < 6) {
        return "密码长度至少 6 位"
    }

    // 3. 模拟验证逻辑
    when (username) {
        "admin" -> {
            return if (password == "123456") {
                "登录成功,欢迎管理员!"
            } else {
                "用户名或密码错误"
            }
        }
        "user1" -> {
            return if (password == "password") {
                "登录成功,欢迎用户!"
            } else {
                "用户名或密码错误"
            }
        }
        else -> return "用户不存在"
    }
}

// 测试调用
println(login("admin", "123456"))     // 登录成功,欢迎管理员!
println(login("user1", "wrong"))      // 用户名或密码错误
println(login("", "123"))            // 用户名不能为空

这个例子融合了 ifelsewhen 和布尔表达式,展示了 Kotlin 条件控制在真实场景中的应用。


小结:掌握 Kotlin 条件控制的关键

Kotlin 条件控制不仅仅是语法,更是一种编程思维。它让你的程序从“按顺序执行”进化到“根据情况选择执行路径”。无论你是初学者还是中级开发者,掌握以下几点都至关重要:

  • if 表达式可返回值,提升代码简洁性;
  • else if 用于多条件分支,逻辑清晰;
  • whenswitch 的升级版,支持范围、类型、集合匹配;
  • 善用布尔表达式,避免冗余判断;
  • 在实际项目中,优先使用 when 替代复杂的 if-else 嵌套。

通过不断练习,你会逐渐发现:条件控制不仅让代码更智能,也让你的逻辑思维变得更清晰。当你能熟练运用 Kotlin 条件控制时,你离写出优雅、可维护的代码,就更近了一步。