Kotlin基础语法 四、控制语句

一、If 条件语句

Kotlin 和Java 的if有一定的区别

1、)传统的If else 用法和java一样

示例:
val a = 10
var b : String
if (a < 0) {
b = “a是小于0的一个整数”
} else if (a in 0…10) {
b = “a是0到10的一个整数”
} else {
b = “a是大于10的一个整数”
}

2、)if语句作为 三元运算符

在 Kotlin 中,if语句可以作为一个表达式,即它会返回一个值。 因此就不需要三元运算符(条件 ? 然后 : 否则),普通的 if 表达式就能实现。

示例:
val max = if (a > b) a else b

3、)if表达式 的分支也可以是代码块,最后的表达式作为该代码块的值。

所以1)中的代码可以替换为:
val a = 10
val b = if (a < 0) {
“a是小于0的一个整数”
} else if (a in 0…10) {
“a是0到10的一个整数”
} else {
“a是大于10的一个整数”
}

二、when条件语句

在Kotlin中使用when 表达式取代了Java中的 switch 语句,when语句不仅可以替代掉switch语句,而且比switch语句更加强大
when 将它的参数与所有的分支条件顺序比较,直到某个分支满足条件。
和if语句一样, when 既可以被当做表达式使用也可以被当做语句使用。
如果它被当做表达式, 符合条件的分支的值就是整个表达式的值,如果当做语句使用, 则忽略个别分支的值。(像 if 一样,每一个分支可以是一个代码块,它的值是块中最后的表达式的值。)
如果其他分支都不满足条件将会求值 else 分支。 如果 when 作为一个表达式使用,则必须有 else 分支, 除非编译器能够检测出所有的可能情况都已经覆盖了[例如,对于 枚举(enum)类条目与密封(sealed)类子类型]。
格式:
when(值或表达式){
值或表达式 -> 表达式或语句、代码块
值或表达式 -> 表达式或语句、代码块
else -> 表达式或语句、代码块
}
1、)when语句实现switch语句功能
when (x) {
1 -> print(“x == 1”)
2 -> print(“x == 2”)
else -> { // 注意这个块
print(“x is neither 1 nor 2”)
}
}

2、)如果很多分支需要用相同的方式处理,则可以把多个分支条件放在一起,用逗号分隔
when (x) {
0, 1 -> print(“x == 0 or x == 1”)
else -> print(“otherwise”)
}
3 、)我们可以用任意表达式(而不只是常量)作为分支条件
when (x) {
parseInt(s) -> print(“s encodes x”)
else -> print(“s does not encode x”)
}
4、) 我们也可以检测一个值在(in)或者不在(!in)一个区间或者集合中
操作符:(in) 在 (!in) 不在
when (x) {
in 1…10 -> print(“x is in the range”)
in validNumbers -> print(“x is valid”)
!in 10…20 -> print(“x is outside the range”)
else -> print(“none of the above”)
}
5、)另一种可能性是检测一个值是(is)或者不是(!is)一个特定类型的值。注意: 由于智能转换,你可以访问该类型的方法与属性而无需任何额外的检测。
fun hasPrefix(x: Any) = when(x) {
is String -> x.startsWith(“prefix”)
else -> false
}
6 、 )when 也可以用来取代 if-else if链。 如果不提供参数,所有的分支条件都是简单的布尔表达式,而当一个分支的条件为真时则执行该分支
when {
x.isOdd() -> print(“x is odd”)
y.isEven() -> print(“y is even”)
else -> print(“x+y is odd.”)
}
7 、)作为表达式使用,像 if 一样,每一个分支可以是一个代码块,它的值是块中最后的表达式的值。
val a = 10
val b = when {
a < 0 -> {
“a是小于0的一个整数”
}
a in 0…10 -> {
“a是0到10的一个整数”
}
else -> {
“a是大于10的一个整数”
}
}

三、for循环

for 循环可以对任何提供迭代器(iterator)的对象进行遍历,语法如下:
for (item in collection){
}
如上所述,for 可以循环遍历任何提供了迭代器的对象。即:
有一个成员函数或者扩展函数 iterator(),它的返回类型
有一个成员函数或者扩展函数 next(),并且有一个成员函数或者扩展函数 hasNext() 返回 Boolean。

for循环可以遍历区间、数组、集合等等:
简单示例,更具体循环操作建议学习kotlin集合相关知识:
for (i in array.indices) {
println(array[i])
}
for ((index, value) in array.withIndex()) {
println(“the element at $index is $value”)
}

四、while、do…while循环

同Java中的while、do…while循环一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值