1、IF 表达式
// 传统用法
var max = a
if (a < b) max = b
// 使用 else
var max: Int
if (a > b) {
max = a
} else {
max = b
}
// 作为表达式
val max = if (a > b) a else b
val max = if (a > b) {
print("Choose a")
a
} else {
print("Choose b")
b
}
这也说明我也不需要像Java那种有一个三元操作符,因为我们可以使用它来简单实现:
val c = if (condition) a else b
下面代码可以注意到,kotlin结尾不需要加分号(;)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
test()//调用测试方法
}
fun test(){
var x = 10
if(x>10){
println("x 大于 10")
}else if(x==10){
println("x 等于 10")
}else{
println("x 小于 10")
}
var a = 1
var b = 2
//如果a>b 返回a 否则返回b
val c = if (a>=b) a else b
println("c 的值为 $c")
}
}
使用 in 运算符来检测某个数字是否在指定区间内,区间格式为 x…y :
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
test()
}
fun test() {
val x = 5
if (x in 1..8) {
println("x 在区间内")
}
}
}
x 在区间内
when 将它的参数和所有的分支条件顺序比较,直到某个分支满足条件。
when 既可以被当做表达式使用也可以被当做语句使用。如果它被当做表达式,符合条件的分支的值就是整个表达式的值,如果当做语句使用, 则忽略个别分支的值。
when 类似其他语言的 switch 操作符。其最简单的形式如下
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
test()
}
fun test(){
val x = 5
when (x) {
1 ->
println("x == 1")
2 ->
println("x == 2")
else -> { //注意这个块
println("x 不是 1 ,也不是 2")
}
}
}
}
x 不是 1 ,也不是 2
在 when 中,else 同 switch 的 default。如果其他分支都不满足条件将会求值 else 分支。
如果很多分支需要用相同的方式处理,则可以把多个分支条件放在一起,用逗号分隔:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
test()
}
fun test(){
val x = 5
when (x) {
1,5 ->
println("x == 1或者 x==5")
2 ->
println("x == 2")
else -> { //注意这个块
println("x 不是 1 ,也不是 2")
}
}
}
}
x == 1或者 x==5