1藏杖、if語句
/**
* 1、普通使用
*/
fun max(a: Int, b: Int): Int {
if (a > b) {
return a
} else {
return b
}
}
/**
* 2脉顿、簡化版
* (1)如果if里面只有一條語句則可以省略{}和return
* (2)kotlin是表達(dá)式語法,所以if語句帶返回值
*/
fun max2(a: Int, b: Int): Int {
return if (a > b) a else b
}
fun main() {
println(max(10, 20))
println(max2(6, 2))
}
2点寥、for循環(huán)
fun main() {
/**-------------------- for循環(huán) --------------------*/
val str = "abcdef"
for (c: Char in str) {
print("$c ")
}
println()
//a b c d e f
for ((index, c) in str.withIndex()) {
print("($index, $c) ")
}
println()
//(0, a) (1, b) (2, c) (3, d) (4, e) (5, f)
/**-------------------- forEach循環(huán) --------------------*/
str.forEach {
print("$it ")
}
println()
//a b c d e f
str.forEachIndexed { index, c ->
print("($index, $c) ")
}
println()
//(0, a) (1, b) (2, c) (3, d) (4, e) (5, f)
//此處為函數(shù)參數(shù)艾疟,類似于c語言里的函數(shù)指針,后面會(huì)講到敢辩,這里知道就行了
str.forEachIndexed(::action)
}
fun action(index: Int, c: Char) {
print("($index, $c) ")
}
3蔽莱、continue和break
fun main() {
val str = "abcde"
/**-------------------- continue --------------------*/
for (c in str) {
if (c == 'c') {
continue
}
print("$c ")
}
println()
//跳過此次循環(huán),繼續(xù)執(zhí)行下次循環(huán)戚长,輸出結(jié)果:a b d e
/**-------------------- break --------------------*/
for (c in str) {
if (c == 'c') {
break
}
print("$c ")
}
println()
//跳出本層循環(huán)盗冷,不再執(zhí)行,輸出結(jié)果:a b
/**-------------------- 高級(jí)循環(huán) --------------------*/
str.forEach {
if (it == 'c') {
//continue 不能用于高級(jí)循環(huán)
//break 不能用于高級(jí)循環(huán)
return //結(jié)束方法同廉,即返回到main仪糖,結(jié)束main方法
}
}
}
4柑司、標(biāo)簽
fun main() {
val str1 = "abc"
val str2 = "123"
/**-------------------- 1、多重循環(huán) --------------------*/
for (c1 in str1) {
for (c2 in str2) {
print("($c1, $c2) ")
}
}
println()
//(a, 1) (a, 2) (a, 3) (b, 1) (b, 2) (b, 3) (c, 1) (c, 2) (c, 3)
/**-------------------- 2锅劝、標(biāo)簽處返回 --------------------*/
tag@ for (c1 in str1) {
for (c2 in str2) {
print("($c1, $c2) ")
if (c1 == 'b' && c2 == '2') {
break@tag
//return 結(jié)束方法攒驰,如果后面還有邏輯就執(zhí)行不到了
}
}
}
println("main結(jié)束")
//(a, 1) (a, 2) (a, 3) (b, 1) (b, 2) main結(jié)束
}
5、while和do while
fun main() {
/**-------------------- while循環(huán) --------------------*/
//輸出0到10
var index = 0
while (index <= 10) {
print("$index ")
index++
}
println()
//0 1 2 3 4 5 6 7 8 9 10
/**-------------------- do while循環(huán) --------------------*/
var a = 11
do {
print("$a ")
a--
} while (a <= 10 && a >= 0)
println()
//11 10 9 8 7 6 5 4 3 2 1 0
//可以發(fā)現(xiàn)11沒有在0-10的范圍內(nèi)還是輸出了故爵,這是因?yàn)閐o-while循環(huán)會(huì)先執(zhí)行一次然后才執(zhí)行判斷
var b = 11
do {
print("$b ")
b--
} while (b in 0..10)
println()
//區(qū)間的運(yùn)用
//11 10 9 8 7 6 5 4 3 2 1 0
}
6玻粪、when表達(dá)式
fun main() {
/**-------------------- 1.基本用法 --------------------*/
var age = 6
when (age) {
1 -> {
println("沒上學(xué)")
}
2 -> {
println("沒上學(xué)")
}
6 -> {
println("上小學(xué)")
}
12 -> {
println("上中學(xué)")
}
15 -> {
println("上高中")
}
//如果只有一條語句可以省略{}
else -> println("成年了")
}
//結(jié)果:上小學(xué)
/**-------------------- 2.條件合并 --------------------*/
age = 4
when (age) {
//相同的處理可以合并
1, 2, 3, 4, 5 -> println("沒上學(xué)")
6 -> println("上小學(xué)")
12 -> println("上中學(xué)")
15 -> println("上高中")
else -> println("成年了")
}
//結(jié)果:沒上學(xué)
/**-------------------- 3.結(jié)合區(qū)間使用 --------------------*/
age = 16
when (age) {
//in+區(qū)間:表示在某個(gè)區(qū)間內(nèi)
in 1..5 -> println("沒上學(xué)")
in 6..11 -> println("上小學(xué)")
in 12..14 -> println("上中學(xué)")
in 15..17 -> println("上高中")
else -> println("成年了")
}
//結(jié)果:上高中
/**-------------------- 4.用來判斷類型 --------------------*/
val str: Any = "kotlin"
//val b = str is String
when (str) {
//is:類型判斷關(guān)鍵字
is Int -> println("Int類型")
is String -> println("String類型")
else -> println("I未知類型")
}
//結(jié)果:String類型
/**-------------------- 5.不帶參數(shù) --------------------*/
age = 22
when {
age < 6 -> println("沒有上學(xué)")
age in 6..17 -> println("正在上學(xué)")
else -> println("一看就是社會(huì)人兒")
}
//結(jié)果:一看就是社會(huì)人兒
/**-------------------- 6.when表達(dá)式返回值 --------------------*/
val kot: Any = "kotlin"
val result = when (kot) {
is Int -> "Int類型"
is String -> {
var add = 1 + 2
add++
"String類型"
}
else -> "未知類型"
}
println(result)
//結(jié)果:String類型
//說明:when表達(dá)式的返回值為滿足條件的分支的最后一行結(jié)果
}