# Kotlin `if`表达式

> 原文： [https://www.programiz.com/kotlin-programming/if-expression](https://www.programiz.com/kotlin-programming/if-expression)

#### 在本文中，您将借助示例学习在 Kotlin 中使用`if`表达式。

## `if...else`的传统用法

`if...else`的语法是：

```kt
if (testExpression) {
   // codes to run if testExpression is true
}
else {
  // codes to run if testExpression is false
}
```

如果将`testExpression`求值为`true`，则`if`执行代码的特定部分。 它可以具有可选的`else`子句。 如果`testExpression`为假，则执行`else`子句中的代码。

* * *

### 示例：`if...else`的传统用法

```kt
fun main(args: Array<String>) {

    val number = -10

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

运行该程序时，输出为：

```kt
Negative number

```

* * *

## Kotlin `if`表达式

与 Java（以及其他许多编程语言）不同，`if`可以在 Kotlin 中用作表达式; 它返回一个值。 **推荐阅读**： [Kotlin 表达式](/kotlin-programming/statement-expression#expressions "Kotlin Expression")

* * *

这是一个例子：

### 示例：Kotin `if`表达式

```kt
 fun main(args: Array<String>) {

    val number = -10

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

    println(result)
}
```

运行该程序时，输出为：

```kt
Negative number

```

当使用`if`作为表达式时，`else`分支是必需的。

* * *

如果`if`的主体只有一个语句，则花括号是可选的。 例如，

```kt
fun main(args: Array<String>) {
    val number = -10
    val result = if (number > 0) "Positive number" else "Negative number"
    println(result)
}
```

这类似于 Java 中的[三元运算符](/java-programming/ternary-operator "Java ternary operator.")。因此，在 Kotlin 中没有三元运算符。

* * *

### 示例：具有多个表达式的`if`块

如果`if`分支的块包含多个表达式，则最后一个表达式作为该块的值返回。

```kt
fun main(args: Array<String>) {

    val a = -9
    val b = -11

    val max = if (a > b) {
        println("$a is larger than $b.")
        println("max variable holds value of a.")
        a
    } else {
        println("$b is larger than $a.")
        println("max variable holds value of b.")
        b
    }
    println("max = $max")
}

```

运行该程序时，输出为：

```kt
-9 is larger than -11.
max variable holds value of a.
max = -9
```

**推荐阅读**： *Kotlin `when`语句*

* * *

## Kotlin `if..else..if`阶梯

您可以使用`if..else...if`阶梯在 Kotlin 中的许多块中返回一个代码块。

* * *

### 例如：`if..else..if`阶梯

```kt
fun main(args: Array<String>) {

    val number = 0

    val result = if (number > 0)
        "positive number"
    else if (number < 0)
        "negative number"
    else 
        "zero"

    println("number is $result")
}

```

该程序检查`num`是正数，负数还是零。

* * *

## Kotlin 嵌套`if`表达式

一个`if`表达式可以位于另一个`if`表达式的嵌套块内。

* * *

### 示例：嵌套`if`表达式

该程序计算三个数字中最大的数字。

```kt
fun main(args: Array<String>) {

    val n1 = 3
    val n2 = 5
    val n3 = -2

    val max = if (n1 > n2) {
        if (n1 > n3)
            n1
        else
            n3
    } else {
        if (n2 > n3)
            n2
        else
            n3
    }

    println("max = $max")
}
```

运行该程序时，输出为：

```kt
max = 5

```