目录
1.if表达式
<1>传统if表达式用法
- 传统用法
var a = 1 var b = 2 var max = a Log.i("aaaaaa1",max.toString()) if(a < b) max = b Log.i("aaaaaa2",max.toString())
输出:aaaaaa1: 1
aaaaaa2: 2 - 使用else
var a = 1 var b = 2 var max:Int if(a > b) { max = a }else{ max = b } Log.i("aaaaaa",max.toString())
输出:aaaaaa: 2
- 作为表达式
var a = 1 var b = 2 val max = if(a>b)a else b Log.i("aaaaaa",max.toString())
输出:aaaaaa: 2
<2>把if表达式结果赋值给一个变量
val a:Int = 1
val b:Int = 2
val max = if(a>b){
a
}else{
b
}
Log.i("aaaaaa",max.toString());
输出:aaaaaa: 2
简单判断写法,替代三元表达式
val max = if (a > b) a else b
<3>使用区间:判断某值是否在区间内
if(a in 1..10) {
Log.i("aaaaaa", "in");
}else{
Log.i("aaaaaa", "out");
}
2.When表达式
<1>when表达式类似whitch(Java中),方法如下:
val x:Int = 3
when(x){
1 -> Log.i("aaaaaa","x==1")
2 -> Log.i("aaaaaa","x==2")
else ->{
Log.i("aaaaaa","x不是1,也不是2")
}
}
<2>重叠分支法
when(x){
0,1 -> Log.i("aaaaaa","x==0 or x==1")
else -> Log.i("aaaaaa","otherwise")
}
<3>使用区间
val x:Int = 11
val validNumber = arrayOf(1,2,3)
when(x){
in 1..10 -> Log.i("aaaaaa","x is in the range")
in validNumber -> Log.i("aaaaaa","x is in the validNumber")
!in 10..20 -> Log.i("aaaaaa","x is outside the range")
else -> Log.i("aaaaaa","none of the above")
}
<4>检测一个值是或不是一个特定类型的值
fun hasPrefix(x:Any) = when(x){
is String -> x.startsWith("prefix")
else -> false
}
调用时
var flag:Boolean
flag = hasPrefix(1111111)
Log.i("aaaaaa",flag.toString())
<5>用when取代if...else if链
如果不提供参数,所有的分支都是简单的布尔表达式
when{
x.isOdd(1) -> Log.i("aaaaaa","x is old")
x.isEven(2) -> Log.i("aaaaaa","x is even")
else -> Log.i("aaaaaa","x is funny")
}
<6>when中使用in运算符来判断集合内是否包含某实例
val items = setOf("apple","banana","kiwi")
when{
"orange" in items -> Log.i("aaaaaa","juicy")
"apple" in items -> Log.i("aaaaaa","apple is fine too")
}
输出: apple is fine too