1)if 分支既可作为语句使用,也可作为表达式(可以赋值给变量)使用。
if(){
}else if(){
}else{
}
如果 if、 elseif和else后的代码块只有一行语句,则可以
省略花括号,
val a = 5
if (a > 4)
//如果 a > 4,则执行下面的执行体,只有一行代码作为代码块
printlr川、大于 ”}
else
//否则,执行下面的执行体,只有一行代码作为代码块
println (” 不大于 ”}
if表达式代替了三元表达式:
var age = 18
var resutl = if(age>18) "age大于18" else if(age==18) "age等于18" else "age小于18"
println(resutl)//age等于18
2)when表达式:代替了switch表达式;可以作为语句,也可以作为表达式(赋值给变量)返回。
使用箭头->
作为语句
var result = "A"
when(result){
"B" -> println("B" )
"A" -> println("A" )//A
"C" -> println("C" )
else -> println("其它" )//这个相当于defalt
}
作为表达式返回
var result = "A"
val str = when(result){//作为表达式返回
"B" -> println("B" )
"A" -> println("A" )//A
"C" -> println("C" )
else -> println("其它" )//这个相当于defalt
}
如果 when 分支包含多条语句,则需要使用花括号将这些语句括成一个整体形成代码块。
var result = "A"
when(result){
"B" -> {
println("B" )
println("望百尺竿头更进一步")
}
"A" -> println("A" )//A
"C" -> println("C" )
else -> println("其它" ) //这个相当于defalt
}
when 分支可以匹配多个值。
when 分支后的值不要求是常量 可以是任意表达式。
when 分支对条件表达式的类型没有任何要求。
when(result){
"B","C" -> {//可以匹配多个值
println("B" )
println("望百尺竿头更进一步")
}
"A" -> println("A" )//A
else -> println("其它" ) //这个相当于defalt
}
var str = "EFGH"
print("${str[0]-4}")//str[0]为E,减去4为A
var score = 'B'
when(score){
str[0] - 4, str[1] - 4-> {//可以是任意表达式
print("优秀")
}
else -> print("其它")
}
}
class Person{
}
var person = Person()
when(person){//对类型没有任何要求
person-> {
print("person")//person
}
else -> print("其它")
}
when搭配 in,!in,is,!is使用
when分支也可以代替表达式:
var result = "a"
when{
//每个分支都是 个布尔表达式,当某个分支的布尔表达式为 true时, 将会执行该分支的代码。
result.equals("b") -> print("b")
result.equals("a") -> print("a")
}
3)while循环,do...while循环,for...in循环
var result = 1..8
for(item in result step 3){ //这里指定了步长
print(item)// 1 4 7
}
4)break
- 终止所在的循环语句
- 终止外层循环,使用@标签
var result = 1..8
outer@ for(item in result){
for(i in 0..3){
if(i == 1){
print(i)// 1
break@outer
}
}
}
5)continue:和break 类似, ontinue 后也可以紧跟一个标签,用于直接跳过标签所标识循环的当次循环的剩下语句 重新开始下 次循环。
6)return 和Java一样
网友评论