前言

记录一下Kotlin基本语法2,主要涉及选择结构语句循环结构语句区间等,记录于此,方便自己查阅。

正文

选择结构语句

选择结构语句分为if条件语句和when条件语句。

if条件语句

if条件语句分为3种语法格式。

if语句

if语句是指如果满足某种条件,则进行该条件下的某种处理。

var mA = 100 var mB = 200 var max: Int if (mA > mB) {    max = mA }
if…else语句

if…else语句是指如果满足某种条件,就进行该条件下的某种处理,否则就进行另一种处理。

var mA = 100 var mB = 200 var max: Int if (mA > mB) {    max = mA } else {    max = mB }

还可以简写

max = if (mA > mB) mA else mB
if…else if…else语句

if…else if…else语句用于对多个条件进行判断,进行多种不同的处理。

var mA = 100 var level: Int if (mA >= 100) {    level = 2 } else if (mA > 60) {    level = 1 } else {    level = 0 }
when条件语句

when条件语句是一种很常用的选择语句。和if条件语句不同,它只能针对某个表达式的值做出判断,从而决定程序执行哪一段代码。

var value: Float = 90F when {    value >= 100F -> Log.d(TAG, "test: 非常优秀")    value in 90F..<100F -> Log.d(TAG, "test: 优秀")    value in 60F..<90F -> Log.d(TAG, "test: 不错 ")    value < 60F -> Log.d(TAG, "test: 加油! ") }
var day: Int = 3 var week = when (day) {    7 -> "周日"    6 -> "周六"    5 -> "周五"    4 -> "周四"    3 -> "周三"    2 -> "周二"    1 -> "周一"    else -> "错误值" }
var day: Int = 89 when (day) {    in 90..100 -> "Very Good"    in 70..<90 -> "Good"    in 60..<70 -> "Ok"    else -> "come on" }

循环结构语句

循环语句分为while循环语句、do…while循环语句、for循环语句和forEach循环语句4种。

while循环语句

while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。

var cout: Int = 8 while (cout > 0) {    println("$cout")    cout-- }
do…while循环语句

跟while差不多,但do…while中的循环条件是否成立,循环体都会执行一次。

var cout: Int = 8 do { println("$cout") cout-- } while (cout > 0)
for循环语句

已知循环次数进行遍历。

for (i in 0..10) { Log.d(TAG, "test: $i") }
forEach循环语句

forEach循环语句时Kotlin中比较常用的一种循环方式。

调用者可以是数组或集合。

var mString = "百度一下" mString.forEach { Log.d(TAG, "test : $it ") }

输出结果

test : 百 test : 度 test : 一 test : 下

还有个带索引的forEachIndexed()

mString.forEachIndexed { index, c -> Log.d(TAG, "test : $index -> $c") }

跳转语句

跳转语句有break语句和continue语句。

'break' and 'continue' are only allowed inside a loop

break语句

break语句用在循环语句中,作用是跳出循环语句。

for (i in 0..10) { if (i == 6) { break } Log.d(TAG, "test: $i ") }

当i等于6时不在打印,跳出for循环

test: 0 test: 1 test: 2 test: 3 test: 4 test: 5
continue语句

continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。

for (i in 0..5) { if (i == 3) { continue } Log.d(TAG, "test: $i ") }

当i等于3时跳过,循环+1继续执行。也就是不打印3的值。

test: 0 test: 1 test: 2 test: 4 test: 5

区间

区间通常是指一类数据的集合。

比如,0≤a≤10的实数组成的一个集合是一个区间,它包含了0~10的所有实数。

区间分正向区间和逆向区间。

  1. 正向区间 [1,5] 从小到大

  2. 逆向区间 [5,1] 从大到小

正向区间
方式一:..

闭包区间[1,5]

for (i in 0..5) { Log.d(TAG, "test: $i ") }
test: 1 test: 2 test: 3 test: 4 test: 5
方式二:rangeTo

闭包区间[1,5]

for (i in 1.rangeTo( 5)) { Log.d(TAG, "test: $i ") }

同上。

方式三:until

这个是半包区间[1,5)

for (i in 1 until(5) ) { Log.d(TAG, "test: $i ") } 或 for (i in 1 until 5 ) { Log.d(TAG, "test: $i ") }
test: 1 test: 2 test: 3 test: 4
逆向区间
for (i in 5 downTo 1 ) { Log.d(TAG, "test: $i ") }

区间为[5,1]

输出

test: 5 test: 4 test: 3 test: 2 test: 1
步长

不论是正向还是逆向区间默认步长都是1,也就是+1或-1进行变化。

可以通过step(step:Int)函数改变步长。

rangeTo()不支持改变步长

// .. for (i in 1 ..5 step 2 ) { Log.d(TAG, "test1: $i ") } // until for ( i in 1 until ( 5) step 2){ Log.d(TAG, "test2: $i ") } // downTo for (i in 5 downTo 1 step 2) { Log.d(TAG, "test3: $i ") }

参考文章

  1. 《Kotlin从基础到实战》

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

none
暂无评论...