正文:
If Expression
在KotLin,if是一个表达式,它将会有返回值,所以不会存在三元运算符的表达形式
//传统模式
var a = 1;
var b = 2;
var max: Int
if(a>b)
max = a
else
max = b
System.out.println("max的值为:"+max)
//作为一个表达式
val max1 = if(a>b) a else b
当if分支也是一个块的时候,则该块的最后一个表达式是这个分支的值
//当if分支也为块的时候
val max2 = if(a > b){
System.out.println("得到了a")
a
}else{
System.out.println("得到了b")
b
}
System.out.println("max2的值:"+max2)
When Expression
when语句替代了switch语句var x : Int =3
when(x){
1 -> System.out.println("你选择了1")
2 -> System.out.println("你选择了2")
else ->{
System.out.println("你选择了其它")
}
}
//打印你选择了其它
如果多个分支处理相同的事件,可以将多个分支用逗号隔开var x : Int = 3
when(x){
0,1 -> System.out.println("x == 0 or x==1")
else -> System.out.println("其它")
}
//打印:其它
我们的分支不仅可以是常量也可以是表达式var x: Int = 3
var y: Char ='3'
when(x){
parseInt(y) -> System.out.println("x是3")
else -> System.out.println("x不是3")
}
fun parseInt(ch: Char): Int{ return ch.toInt() - '0'.toInt() }
我们可以用in或者!in来判断一个值是在不在一个范围或者一个集合内var x : Int = 13
when(x){
in 1..10 -> System.out.println("x在这1-10的范围内")
!in 10..20 -> System.out.println("x不再10-20之内")
else -> System.out.println("以上条件都不满足")
}
//打印:x不再10-20之内
我们可以用is或者!is来判断一个值是不是某个类型,当条件为true的时候则执行该事件并退出when语句var y : String = "prefix12"
val hasPrefix = when(y){
is String -> y.startsWith("prefix")
else -> false
}
System.out.println("得到的结果为:"+hasPrefix)//打印:true
For Loops
//第一种方式是遍历数据中的值
var arr : Array<Int> = arrayOf(11,21,13,14,15)
for(item in arr){
System.out.println("遍历数组中的值为:"+item)
}
//第二种方式是遍历数组中的索引
for(i in arr.indices)
System.out.println("返回数组中有效索引的位置:"+i)
//第三种方式是遍历数组中的索引和值
for((index,value) in arr.withIndex()){
System.out.println("得到的key:$index 相应的value:$value")
}
While Loops
while (x > 0) {
x--
}
do {
val y = retrieveData()
} while (y != null) // y is visible here!
Break and continue in loops
var arr : Array<Int> = arrayOf(11,21,13,14,15)
for(item in arr){
if(item == 11)
continue
System.out.println("Item的值:"+item)
}
/*
打印:
Item的值:21
Item的值:13
Item的值:14
Item的值:15
*/
var arr : Array<Int> = arrayOf(11,21,13,14,15)
for(item in arr){
System.out.println("item的值:"+item)
break
}
//打印:item的值:11