Kotlin 条件表达式 #
一、if 表达式基础 #
1.1 基本语法 #
kotlin
val age = 18
if (age >= 18) {
println("成年人")
}
1.2 if-else 语句 #
kotlin
val age = 16
if (age >= 18) {
println("成年人")
} else {
println("未成年人")
}
1.3 if-else if-else #
kotlin
val score = 85
if (score >= 90) {
println("优秀")
} else if (score >= 80) {
println("良好")
} else if (score >= 60) {
println("及格")
} else {
println("不及格")
}
二、if 作为表达式 #
2.1 返回值 #
Kotlin 中 if 是表达式,可以返回值:
kotlin
val age = 18
val status = if (age >= 18) {
"成年人"
} else {
"未成年人"
}
println(status) // 成年人
2.2 替代三元运算符 #
Kotlin 没有三元运算符 ? :,使用 if 表达式替代:
kotlin
// Java 三元运算符
// String status = age >= 18 ? "成年" : "未成年";
// Kotlin if 表达式
val status = if (age >= 18) "成年" else "未成年"
2.3 表达式体要求 #
作为表达式时,每个分支都必须有返回值:
kotlin
// 正确:所有分支都有返回值
val max = if (a > b) a else b
// 错误:else 分支没有返回值
// val result = if (condition) 1 // 编译错误
// 正确:完整的 if-else
val result = if (condition) 1 else 0
2.4 代码块返回值 #
代码块最后一个表达式作为返回值:
kotlin
val max = if (a > b) {
println("a is greater")
a // 返回值
} else {
println("b is greater or equal")
b // 返回值
}
三、条件判断 #
3.1 比较运算符 #
kotlin
val a = 10
val b = 20
a == b // 等于
a != b // 不等于
a < b // 小于
a <= b // 小于等于
a > b // 大于
a >= b // 大于等于
3.2 逻辑运算符 #
kotlin
val a = true
val b = false
a && b // 与(短路)
a || b // 或(短路)
!a // 非
3.3 in 操作符 #
kotlin
val score = 85
if (score in 90..100) {
println("优秀")
} else if (score in 80 until 90) {
println("良好")
} else if (score in 60 until 80) {
println("及格")
} else {
println("不及格")
}
// 检查集合包含
val list = listOf(1, 2, 3)
if (2 in list) {
println("包含")
}
3.4 is 操作符 #
kotlin
val obj: Any = "Hello"
if (obj is String) {
println("字符串长度: ${obj.length}") // 智能转换
}
if (obj !is Int) {
println("不是整数")
}
四、嵌套条件 #
4.1 嵌套 if #
kotlin
val age = 25
val hasLicense = true
if (age >= 18) {
if (hasLicense) {
println("可以驾驶")
} else {
println("需要考取驾照")
}
} else {
println("未成年,不能驾驶")
}
4.2 使用逻辑运算符简化 #
kotlin
val age = 25
val hasLicense = true
if (age >= 18 && hasLicense) {
println("可以驾驶")
} else if (age >= 18 && !hasLicense) {
println("需要考取驾照")
} else {
println("未成年,不能驾驶")
}
五、区间与条件 #
5.1 数值区间 #
kotlin
val score = 85
// 闭区间
if (score in 0..100) {
println("有效分数")
}
// 半开区间
if (score in 60 until 100) {
println("及格但未满分")
}
// 降序区间
if (score in 100 downTo 0) {
println("有效分数")
}
// 带步长
if (score in 0..100 step 10) {
println("整十分数")
}
5.2 字符区间 #
kotlin
val char = 'M'
if (char in 'A'..'Z') {
println("大写字母")
}
if (char in 'a'..'z') {
println("小写字母")
}
if (char in '0'..'9') {
println("数字")
}
六、智能类型转换 #
6.1 if 中的智能转换 #
kotlin
val obj: Any = "Hello Kotlin"
if (obj is String) {
// obj 自动转换为 String
println(obj.length)
println(obj.uppercase())
}
6.2 提前返回 #
kotlin
fun process(obj: Any) {
if (obj !is String) return
// obj 自动转换为 String
println(obj.length)
}
七、常见模式 #
7.1 默认值模式 #
kotlin
val name: String? = getName()
val displayName = if (name != null) name else "Unknown"
7.2 验证模式 #
kotlin
fun validate(age: Int): Boolean {
if (age < 0) return false
if (age > 150) return false
return true
}
7.3 多条件模式 #
kotlin
val day = 6
val isWeekend = day == 6 || day == 7
if (isWeekend) {
println("周末")
}
八、最佳实践 #
8.1 使用表达式形式 #
kotlin
// 推荐
val status = if (age >= 18) "成年" else "未成年"
// 不推荐
var status: String
if (age >= 18) {
status = "成年"
} else {
status = "未成年"
}
8.2 避免深层嵌套 #
kotlin
// 不推荐
if (condition1) {
if (condition2) {
if (condition3) {
// ...
}
}
}
// 推荐:提前返回
if (!condition1) return
if (!condition2) return
if (!condition3) return
// ...
8.3 使用 when 替代复杂 if-else #
kotlin
// 复杂 if-else
val grade = if (score >= 90) "A"
else if (score >= 80) "B"
else if (score >= 70) "C"
else if (score >= 60) "D"
else "F"
// 使用 when(更清晰)
val grade = when {
score >= 90 -> "A"
score >= 80 -> "B"
score >= 70 -> "C"
score >= 60 -> "D"
else -> "F"
}
九、实战示例 #
9.1 成绩等级判断 #
kotlin
fun getGrade(score: Int): String {
return if (score !in 0..100) {
"无效分数"
} else if (score >= 90) {
"优秀"
} else if (score >= 80) {
"良好"
} else if (score >= 60) {
"及格"
} else {
"不及格"
}
}
9.2 闰年判断 #
kotlin
fun isLeapYear(year: Int): Boolean {
return if (year % 400 == 0) {
true
} else if (year % 100 == 0) {
false
} else if (year % 4 == 0) {
true
} else {
false
}
}
// 简化版本
fun isLeapYear2(year: Int): Boolean {
return year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)
}
9.3 三角形判断 #
kotlin
fun triangleType(a: Int, b: Int, c: Int): String {
if (a + b <= c || a + c <= b || b + c <= a) {
return "不是三角形"
}
return if (a == b && b == c) {
"等边三角形"
} else if (a == b || b == c || a == c) {
"等腰三角形"
} else {
"普通三角形"
}
}
十、总结 #
if 表达式要点:
- if 是表达式:可以返回值
- 替代三元运算符:
if (condition) a else b - 智能类型转换:在条件中进行类型转换
- 区间检查:使用
in操作符
下一步,让我们学习 When表达式!
最后更新:2026-03-27