1. 概述

本文将深入探讨 Kotlin 中 if-else 的多种使用方式,重点讲解它作为表达式(expression)而非仅是控制语句的强大特性。对于熟悉 Java 的开发者来说,这是 Kotlin 提升代码简洁性和可读性的一个典型例子,✅ 掌握这一点能避免很多“踩坑”。

2. 传统用法

和大多数编程语言一样,Kotlin 支持基本的 ifif-else 语句用于条件判断。

2.1 If 语句

if 语句在条件为真时执行其代码块,否则跳过。

示例:

val number = 15

if (number > 0) {
    return "Positive number"
}
return "Positive number not found"

⚠️ 注意:这里的 if 是作为语句使用的,不返回值。

2.2 If-Else 语句

当需要根据条件真假执行不同逻辑时,使用 if-else。条件成立走 if 分支,否则走 else

示例:

val number = -50

if (number > 0) {
    return "Positive number"
} else {
    return "Negative number"
}

3. Kotlin 的 If-Else 表达式

这才是 Kotlin 的精髓所在——if-else 不只是流程控制,更是一个表达式,可以返回值。

什么是表达式 vs 语句?

  • 表达式(Expression):能求值并返回结果的代码片段,例如 50 + number
  • 语句(Statement):执行某个动作的代码单元,比如变量声明 val result = 50 + 25,其中包含了表达式。

关键点:

在 Kotlin 中,if 可以作为表达式使用,此时 else 分支是强制要求的,否则编译器会报错。

这意味着你可以直接把 if-else 的结果赋给变量:

val number = -50

val result = if (number > 0) {
    "Positive number"
} else {
    "Negative number"
}
return result

单行写法(替代三元运算符)

Kotlin 没有像 Java 那样的三元运算符(? :),因为 if-else 表达式本身就实现了相同功能,且更清晰。

大括号可省略,写成一行:

val number = -50
val result = if (number > 0) "Positive number" else "Negative number"

return result

✅ 这就是 Kotlin 替代 condition ? "A" : "B" 的标准写法,简洁又直观。

3.1 多表达式分支

ifelse 块中可以包含多个表达式,整个块的返回值是最后一个表达式的值

示例:

val x = 24
val y = 73

val result = if (x > y) {
    println("$x is greater than $y")
    x  // ← 返回这个值
} else {
    println("$x is less than or equal to $y")
    y  // ← 返回这个值
}
return result

⚠️ 注意:即使前面有 println,最终赋值的是 xy

4. If-Else If-Else 条件链

当需要判断多个互斥条件时,可以用 if-else if-else 链,从上到下依次判断,命中即停。

示例:判断数字类型

val number = 60

val result = if (number < 0) {
    "Negative number"
} else if (number in 0..9) {
    "Single digit number"
} else if (number in 10..99) {
    "Double digit number"
} else {
    "Number has more digits"
}
return result

✅ 使用 in 0..9 判断范围是 Kotlin 特有的简洁语法,比 >= && <= 更易读。

5. 嵌套 If-Else 表达式

在一个 if-else 表达式内部再嵌套另一个 if-else,称为嵌套表达式。常用于多维度判断。

示例:找出三个数中的最大值

val x = 37
val y = 89
val z = 6

val result = if (x > y) {
    if (x > z)
        x
    else
        z
} else {
    if (y > z)
        y
    else
        z
}
return result

✅ 虽然可读性尚可,但深层嵌套容易“踩坑”。建议超过两层时考虑提取函数或使用 when 表达式替代。

6. 总结

  • ✅ Kotlin 中的 if-else表达式,能返回值,可直接赋给变量。
  • ✅ 必须包含 else 分支(作为表达式时),否则编译失败。
  • ✅ 替代了 Java 的三元运算符,语法更统一。
  • ✅ 支持多表达式块,返回最后一个表达式的值。
  • ✅ 可用于链式判断和嵌套,但注意保持代码可读性。

合理利用 if-else 表达式,能让 Kotlin 代码更加简洁、函数式,减少冗余变量和提前返回。

示例代码已托管至 GitHub:https://github.com/Baeldung/kotlin-tutorials/tree/master/core-kotlin-modules/core-kotlin-lang-2

更多 Kotlin 特性,推荐阅读我们的 Kotlin 教程合集


原始标题:If-Else Expression in Kotlin