Kotlin关键字`when`的详细用法

发布于:2025-03-14 ⋅ 阅读:(24) ⋅ 点赞:(0)

Kotlin关键字when的详细用法

在Kotlin中,when是一个强大的控制流语句,相当于其他语言中的switch语句,但更加强大且灵活。本文将详细讲解when的用法及其常见场景,并与Java的switch语句进行对比。

一、基本语法

基本的when语法如下:

val number = 3
when (number) {
    1 -> println("One")
    2 -> println("Two")
    3 -> println("Three")
    else -> println("Unknown")
}

二、匹配多个条件

可以使用逗号,分隔多个匹配条件:

val day = "Saturday"
when (day) {
    "Saturday", "Sunday" -> println("Weekend")
    else -> println("Weekday")
}

三、范围检查

使用in关键字可以判断一个值是否在一个范围或集合内:

val score = 85
when (score) {
    in 90..100 -> println("Excellent")
    in 75..89 -> println("Good")
    in 60..74 -> println("Pass")
    else -> println("Fail")
}

四、类型检查

when还可以用于类型检查,相当于Java中的instanceof

val obj: Any = "Hello Kotlin"
when (obj) {
    is String -> println("It's a String")
    is Int -> println("It's an Integer")
    else -> println("Unknown type")
}

五、不带参数的when

when也可以不带参数,这时可以用作更灵活的条件语句:

val number = 15
when {
    number % 3 == 0 && number % 5 == 0 -> println("FizzBuzz")
    number % 3 == 0 -> println("Fizz")
    number % 5 == 0 -> println("Buzz")
    else -> println(number)
}

六、作为表达式使用

Kotlin的when还可以直接作为表达式返回一个值:

val score = 78
val result = when (score) {
    in 90..100 -> "A"
    in 80..89 -> "B"
    in 70..79 -> "C"
    else -> "D"
}
println("Grade: $result")

七、与Java的switch语句对比

与Java的switch相比,Kotlin的when更加灵活强大:

  • Java的switch仅支持基本类型(如int、byte、short、char)、它们的包装类、枚举类型和String类型。
  • Kotlin的when支持任意类型的表达式,包括范围检查、类型检查、集合检查等更高级的特性。
  • Kotlin的when可以作为表达式直接返回值,而Java的switch语句在Java 14之前无法做到。

八、注意事项

  • when表达式必须是详尽的,或者必须包含else分支。
  • 在使用类型检查时,编译器会自动进行智能类型转换。

九、总结

Kotlin的when关键字通过更简洁的语法和强大的功能,极大提升了代码的可读性和可维护性。合理使用when可以让代码更优雅、更清晰。

希望本文能够帮助你更好地理解并掌握when的用法,提升你的Kotlin编程技能。

参考链接

在这里插入图片描述