2.4.1 while循环
Kotlin有while循环和do-while循环,他们的语法和Java中相应的循环没有任何区别
2.4.2 迭代数字:区间和数列
在java中for循环,是先初始化变量,再循环中每一步更新它的值,并在满足某个限制条件时退出循环。为了替代这种最常见的循环用法,Kotlin使用了区间的概念
区间本质上就是两个值之间的间隔,这两个值通常是数字:一个起始值,一个结束值。使用 .. 运算符来表示区间:
val oneToTen = 1..10
注意Kotlin的区间是包含的或者闭合的,使用 until 函数可以创建结束值得半闭合区间
打印1到100的值
for (i in 1..100) {
println(i)
}
倒序打印,并且只打印偶数
for (i in 100 downTo 1 step 2) {
println(i)
}
2.4.3 迭代map、list集合
val binaryReps = TreeMap<Char,String>()
for (c in 'A'..'F'){
val binary = Integer.toBinaryString(c.toInt())
binaryReps[c] = binary
}
for ((letter,binary) in binaryReps){
println("$letter = $binary")
}
》》》
val list = arrayListOf<String>("a","b","c")
for ((index,element) in list.withIndex()){ //迭代集合时使用下标
println("$index:$element")
}
2.4.4 使用 "in" 检查集合和区间的成员
使用in运算符来检查一个值是否在区间中,或者它的逆运算,!n,来检查这个值是否不在区间中。
fun recognize(c: Char) =
when (c) {
in '0'..'9' -> "It's a diglt!"
in 'a'..'z', in 'A'..'Z' -> "it's a letter"
else -> "I don't know"
}
println("Kotlin" in "Java".."Scala")
这里字符串比较是按字母表顺序进行比较,因为String实现了Comparable
println("Kotlin" in setOf<String>("Java","Scala")) // in检查也同样适用于集合