4.2.2 if表达式
Kotlin的if还可作为表达式使用,也就是说,整个if表达式(包括else部分)最终会返回一个值,因此if可以代替Java中的三目运算符。
fun main(args: Array<String>) {
var age = 20
//将if表达式赋值给str变量
var str = if (age > 20) "age大于20" else if(age < 20)
"age小于20" else "age等于20"
println(str)
}
if表达式的分支依然可以是用花括号括起来的代码块,此时代码块的最后一条表达式的值将作为整个代码块的值。例如如下代码。
fun main(args: Array<String>) {
var age = 18
//将if表达式赋值给str变量
var str = if (age > 20) {
println("大于20的分支")
"age大于20"
} else if(age < 20) {
println("小于20的分支")
"age小于20"
} else {
println("else的分支")
"age等于20"
}
println(str)
}
age小于20
4.2.3 when分支语句
when分支取代了Java原有的switch语句,例如如下Java程序。
public class SwitchTest{
public static void main(String[] args) {
char score = 'B';
switch(score) {
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("中");
break;
case 'D':
System.out.println("及格");
break;
default :
System.out.println("不及格");
}
}
}
fun main(args: Array<String>){
var score = 'B'
when (score){
'A' -> println("优秀")
'B' -> println("良好")
'C' -> println("中")
'D' -> println("及格")
else -> println("不及格")
}
}
1.不再需要使用case关键字。
2. case值后的冒号改为使用箭头(->)。
3. default改为更为意义更明确的else。
fun main(args: Array<String>){
var score = 'B'
when (score){
'A' -> {
println("优秀")
println("望百尺竿头更进步")
}
'B' -> {
println("良好")
println("不拼一把,你不知道自己的能力")
}
'C' -> println("中")
'D' -> println("及格")
else -> {
println("不及格")
println("啥也不说了,下次再来")
}
}
}
1. when分支可以匹配多个值。
2. when分支后的值不要求是常量,可以是任意表达式。
3. when分支对条件表达式的类型没有任何要求。
fun main(args: Array<String>){
var score = 'B'
when (score){
'A', 'B' -> {
println("优秀")
println("望百尺竿头更进步")
}
'C', 'D' -> println("中")
else -> {
println("不及格")
println("啥也不说了,下次再来")
}
}
}
when分支后的值不再要求是常量或字面值,可以是任意表达式。例如如下程序。
fun main(args: Array<String>){
var score = 'B'
var str = "EFGH"
when (score){
str[0] - 4, str[1] - 4 -> {
println("优秀")
println("望百尺竿头更进步")
}
str[2] - 4, str[3] - 4 -> println("中")
else -> {
println("不及格")
println("啥也不说了,下次再来")
}
}
}
import java.util.Date
fun main(args: Array<String>){
var date = Date()
// when
when (date){
Date() -> {
println("优秀")
println("望百尺竿头更进步")
}
else -> {
println("不及格")
println("啥也不说了,下次再来")
}
}
}
以上内容节选自《疯狂Kotlin讲义》:一本让您最直接认识Kotlin的疯狂讲义
往期连载
相关书籍《疯狂Android讲义》item.jd.com/11689014.ht…