Kotlin关键字`when`的详细用法
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编程技能。
参考链接
- Kotlin官方文档 - When表达式
- Java官方文档 - Switch语句
- Kotlin官方文档 - 控制流