目录
前言
记录一下Kotlin基本语法2,主要涉及选择结构语句,循环结构语句和区间等,记录于此,方便自己查阅。
正文
选择结构语句
选择结构语句分为if条件语句和when条件语句。
if条件语句
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,5] 从小到大
逆向区间 [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 ")
- }
参考文章
《Kotlin从基础到实战》