1)if 分支既可作為語(yǔ)句使用,也可作為表達(dá)式(可以賦值給變量)使用。
if(){
}else if(){
}else{
}
如果 if、 elseif和else后的代碼塊只有一行語(yǔ)句,則可以
省略花括號(hào),
val a = 5
if (a > 4)
//如果 a > 4,則執(zhí)行下面的執(zhí)行體,只有一行代碼作為代碼塊
printlr川、大于 ”}
else
//否則,執(zhí)行下面的執(zhí)行體,只有一行代碼作為代碼塊
println (” 不大于 ”}
if表達(dá)式代替了三元表達(dá)式:
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表達(dá)式:代替了switch表達(dá)式;可以作為語(yǔ)句,也可以作為表達(dá)式(賦值給變量)返回。
使用箭頭->
作為語(yǔ)句
var result = "A"
when(result){
"B" -> println("B" )
"A" -> println("A" )//A
"C" -> println("C" )
else -> println("其它" )//這個(gè)相當(dāng)于defalt
}
作為表達(dá)式返回
var result = "A"
val str = when(result){//作為表達(dá)式返回
"B" -> println("B" )
"A" -> println("A" )//A
"C" -> println("C" )
else -> println("其它" )//這個(gè)相當(dāng)于defalt
}
如果 when 分支包含多條語(yǔ)句,則需要使用花括號(hào)將這些語(yǔ)句括成一個(gè)整體形成代碼塊。
var result = "A"
when(result){
"B" -> {
println("B" )
println("望百尺竿頭更進(jìn)一步")
}
"A" -> println("A" )//A
"C" -> println("C" )
else -> println("其它" ) //這個(gè)相當(dāng)于defalt
}
when 分支可以匹配多個(gè)值。
when 分支后的值不要求是常量 可以是任意表達(dá)式。
when 分支對(duì)條件表達(dá)式的類(lèi)型沒(méi)有任何要求。
when(result){
"B","C" -> {//可以匹配多個(gè)值
println("B" )
println("望百尺竿頭更進(jìn)一步")
}
"A" -> println("A" )//A
else -> println("其它" ) //這個(gè)相當(dāng)于defalt
}
var str = "EFGH"
print("${str[0]-4}")//str[0]為E,減去4為A
var score = 'B'
when(score){
str[0] - 4, str[1] - 4-> {//可以是任意表達(dá)式
print("優(yōu)秀")
}
else -> print("其它")
}
}
class Person{
}
var person = Person()
when(person){//對(duì)類(lèi)型沒(méi)有任何要求
person-> {
print("person")//person
}
else -> print("其它")
}
when搭配 in,!in,is,!is使用


when分支也可以代替表達(dá)式:
var result = "a"
when{
//每個(gè)分支都是 個(gè)布爾表達(dá)式,當(dāng)某個(gè)分支的布爾表達(dá)式為 true時(shí), 將會(huì)執(zhí)行該分支的代碼。
result.equals("b") -> print("b")
result.equals("a") -> print("a")
}
3)while循環(huán),do...while循環(huán),for...in循環(huán)
var result = 1..8
for(item in result step 3){ //這里指定了步長(zhǎng)
print(item)// 1 4 7
}
4)break
- 終止所在的循環(huán)語(yǔ)句
- 終止外層循環(huán),使用@標(biāo)簽
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 類(lèi)似, ontinue 后也可以緊跟一個(gè)標(biāo)簽,用于直接跳過(guò)標(biāo)簽所標(biāo)識(shí)循環(huán)的當(dāng)次循環(huán)的剩下語(yǔ)句 重新開(kāi)始下 次循環(huán)。
6)return 和Java一樣