Kotlin 中废除了 Java 的 for(初始值; 条件; 增减步长) 的控制规则,改用 range 代替。( a , b ) 开区间,不含首尾。[ a , b ] 闭区间,包含首尾。
操作符/关键字/方法 | 名称 | 用法 | 值 |
.. | 闭区间 对应方法 a.rangTo(b) | val range1 = 1..10 val range2 = 10..1 | 1,2,3,4,5,6,7,8,9,10 区间为空 |
val num = 3 val range 7 = num.rangeTo(6) | 3,4,5,6 | ||
until | 半闭区间 | val range3 = 1 until 10 | 1,2,3,4,5,6,7,8,9(不含尾元素) |
..< | 效果同上,于v1.9版本加入,改善 until 的可读性,使得看起来意思更直观。 | val range3 = 1 ..< 10 | |
step | 步进 | val range4 = 1..10 step 2 | 1,3,5,7,9(隔2个取值) |
downTo | 反向 对应方法 a.reversed(b) | val range5 = 10 downTo 1 | 10,9,8,7,6,5,4,3,2,1(倒序) |
val range6 = range2.reversed() | |||
in !in | 是否在区间里 对应方法 a.contains(b) | val boolean2 = 5 in range1 val boolean3 = 5 !in 1..10 | true,5在区间里 false,5在区间里 |
val boolean1 = range1.contain(3) | true,3在区间里 | ||
.shuffled () .random () .average () .count () .sum () | 打乱元素的顺序,返回一个素组 返回所有元素的平均值 | ||
.frist .last | 返回第一个元素 返回最后一个元素 |
val range = 1..10 //闭区间,包含首尾
for (i in range) print("$i,") //遍历写法一,打印:1,2,3,4,5,6,7,8,9,10
for (i in 1..10) print("$i,") //遍历写法二,打印:1,2,3,4,5,6,7,8,9,10
for (i in 1..10) print("1") //类似Java的for循环,循环十次,打印:11111111111
val rangStep = 1..10 step 2 //步进2,隔2个元素取值
for (i in rangStep) print("$i,") //遍历写法一:1,3,5,7,9
for (i in range step 2) print("$i,") //遍历写法二:1,3,5,7,9
for (i in 1..10 step 2) print("$i,") //遍历写法三:1,3,5,7,9
val rangeEmpty = 10..1 //区间是空的
val rangeUntil = 1 until 10 //不包含尾元素:1,2,3,4,5,6,7,8,9
val rangeDownTo = 10 downTo 1 //反向:10,9,8,7,6,5,4,3,2,1
val boolean1 = 5 in range //true,5在区间里
val boolean2 = 5 !in 1..10 //false,5在区间里
val boolean3 = range.contains(5) //true,5在区间里
val charRange = 'a'..'z' //字符区间:a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
val longRange = 1L..10L //长整形区间:1,2,3,4,5,6,7,8,9,10
val doubleRange = 1.1..2.2 //双精度区间
val floatRange = 1.1F..2.2F //单精度区间
val a = 1
val b = 10
val range2 = a.rangeTo(b) //1,2,3,4,5,6,7,8,9,10
val rangeDownTo2 = b.downTo(a) //10,9,8,7,6,5,4,3,2,1
println()
println(range.first) //第一个元素:1
println(range.last) //第一个元素:10
println(range.toString()) //1..10
println(range.shuffled()) //乱序集合:[2, 9, 6, 4, 10, 7, 1, 5, 3, 8]
println(range.random()) //随机元素:8
println(range.average()) //平均值:5.5
println(range.count()) //元素个数:10
println(range.sum()) //所有元素相加的和:55
println(rangStep.step) //步进值:2