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 表达式要点:

  1. if 是表达式:可以返回值
  2. 替代三元运算符if (condition) a else b
  3. 智能类型转换:在条件中进行类型转换
  4. 区间检查:使用 in 操作符

下一步,让我们学习 When表达式

最后更新:2026-03-27