语句和表达式的区别
- 表达式有值,能作为另一个表达式的一部分
- 语句没有值,总是包围着它代码块中的顶层元素
Kotlin和Java的区别
- Java中,所有控制结构都是语句,都没有值
- Kotlin中,除了循环(for、do和do/while)以外,大多数控制结构都是表达式(if/when等)
Example1:if语句
Java代码:
public int max(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}
Kt代码:(Kotlin中,if是表达式,不是语句,可以直接return if表达式)
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}
简化版Kt代码:
fun max2(a: Int, b: Int) = if (a > b) a else b
Example2:when语句
Kotlin中的when,完全可以取代Java中的switch和if/else,when也是表达式,when的每个分支的最后一行为当前分支的值
Java中的switch代码:
public String getPoint(char grade) {
switch (grade) {
case 'A':
return "GOOD";
case 'B':
case 'C':
return "OK";
case 'D':
return "BAD";
default:
return "UN_KNOW";
}
}
Kt中的when代码:
fun getPoint(grade: Char) = when (grade) {
'A' -> "GOOD"
'B', 'C' -> {
println("test when")
"OK"
}
'D' -> "BAD"
else -> "UN_KNOW"
}
Java中的if else代码:
public String getPoint2(Integer point) {
if (point > 100) {
return "GOOD";
} else if (point > 60) {
return "OK";
} else if (point.hashCode() == 0x100) {
//...
return "STH";
} else {
return "UN_KNOW";
}
}
Kt中的when代码:
fun getPoint2(grade: Int) = when {
grade > 90 -> "GOOD"
grade > 60 -> "OK"
grade.hashCode() == 0x100 -> "STH"
else -> "UN_KNOW"
}
网友评论