前言

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

正文

选择结构语句

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

if条件语句

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

if语句

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

  1. var mA = 100
  2. var mB = 200
  3. var max: Int
  4. if (mA > mB) {
  5.   max = mA
  6. }
复制
if…else语句

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

  1. var mA = 100
  2. var mB = 200
  3. var max: Int
  4. if (mA > mB) {
  5.   max = mA
  6. } else {
  7.   max = mB
  8. }
复制

还可以简写

  1. max = if (mA > mB) mA else mB
复制
if…else if…else语句

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

  1. var mA = 100
  2. var level: Int
  3. if (mA >= 100) {
  4.   level = 2
  5. } else if (mA > 60) {
  6.   level = 1
  7. } else {
  8.   level = 0
  9. }
复制
when条件语句

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

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

循环结构语句

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

while循环语句

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

  1. var cout: Int = 8
  2. while (cout > 0) {
  3.   println("$cout")
  4.   cout--
  5. }
复制
do…while循环语句

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

  1. var cout: Int = 8
  2. do {
  3. println("$cout")
  4. cout--
  5. } while (cout > 0)
复制
for循环语句

已知循环次数进行遍历。

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

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

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

  1. var mString = "百度一下"
  2. mString.forEach {
  3. Log.d(TAG, "test : $it ")
  4. }
复制

输出结果

  1. test :
  2. test :
  3. test :
  4. test :
复制

还有个带索引的forEachIndexed()

  1. mString.forEachIndexed { index, c ->
  2. Log.d(TAG, "test : $index -> $c")
  3. }
复制

跳转语句

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

‘break’ and ‘continue’ are only allowed inside a loop

break语句

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

  1. for (i in 0..10) {
  2. if (i == 6) {
  3. break
  4. }
  5. Log.d(TAG, "test: $i ")
  6. }
复制

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

  1. test: 0
  2. test: 1
  3. test: 2
  4. test: 3
  5. test: 4
  6. test: 5
复制
continue语句

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

  1. for (i in 0..5) {
  2. if (i == 3) {
  3. continue
  4. }
  5. Log.d(TAG, "test: $i ")
  6. }
复制

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

  1. test: 0
  2. test: 1
  3. test: 2
  4. test: 4
  5. test: 5
复制

区间

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

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

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

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

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

正向区间
方式一:..

闭包区间[1,5]

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

闭包区间[1,5]

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

同上。

方式三:until

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

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

区间为[5,1]

输出

  1. test: 5
  2. test: 4
  3. test: 3
  4. test: 2
  5. test: 1
复制
步长

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

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

rangeTo()不支持改变步长

  1. // ..
  2. for (i in 1 ..5 step 2 ) {
  3. Log.d(TAG, "test1: $i ")
  4. }
  5.  
  6. // until
  7. for ( i in 1 until ( 5) step 2){
  8. Log.d(TAG, "test2: $i ")
  9. }
  10.  
  11. // downTo
  12. for (i in 5 downTo 1 step 2) {
  13. Log.d(TAG, "test3: $i ")
  14. }
复制

参考文章

  1. 《Kotlin从基础到实战》

相关文章

暂无评论

none
暂无评论...