1. 概述
本文将深入探讨 Kotlin 中 if-else
的多种使用方式,重点讲解它作为表达式(expression)而非仅是控制语句的强大特性。对于熟悉 Java 的开发者来说,这是 Kotlin 提升代码简洁性和可读性的一个典型例子,✅ 掌握这一点能避免很多“踩坑”。
2. 传统用法
和大多数编程语言一样,Kotlin 支持基本的 if
和 if-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 多表达式分支
if
或 else
块中可以包含多个表达式,整个块的返回值是最后一个表达式的值。
示例:
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
,最终赋值的是 x
或 y
。
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 教程合集。