Kotlin笔记-003区间

237 阅读1分钟

区间

区间的创建

    // 闭区间;范围在[1,10]
    val intRange1: IntRange = 1..10
    val charRange1: CharRange = 'a'..'z'
    val longRange1: LongRange = 1L..10L

    // 前闭后开区间;范围在[1,10)
    val intRange2: IntRange = 1 until 10
    val charRange2: CharRange = 'a' until 'z'
    val longRange2: LongRange = 1L until 10L

    // 倒序区间;范围在[10,1]
    val intRange3: IntProgression = 10 downTo 1
    val charRange3: CharProgression = 'z' downTo 'a'
    val longRange3: LongProgression = 10L downTo 1L

区间的步长

    val intRange1: IntProgression = 1..10 step 2
    val charRange1: CharProgression = 'a'..'z' step 2
    val longRange1: LongProgression = 1L..10L step 2

离散值区间与连续值区间

    // 离散值,可以一个一个取值,可数可遍历,有步长step
    val intRange: IntRange = 1..10
    println(intRange.joinToString())

    // 连续值,不可以一个一个取值,不可数不可遍历,没有步长step
    val floatRange: ClosedFloatingPointRange<Float> = 1f..2f
    val doubleRange: ClosedFloatingPointRange<Double> = 1.0..2.0
    // 没有 joinToString 方法,只能 toString
    println(floatRange.toString())
    println(doubleRange.toString())

区间的迭代

	// 只有离散区间才可以迭代遍历
    val intRange: IntRange = 1..10
    for (num in intRange) {
        println(num)
    }
    intRange.forEach { num ->
        println(num)
    }

区间的包含关系

不论区间是离散区间,还是连续区间,都可以使用 in 来判断包含关系;

    val intRange: IntRange = 1..10
    if (3 in intRange) {
        println("num is in intRange")
    }
    if (12 in intRange) {
        println("num is not in intRange")
    }

区间的使用

    val ints:IntArray = intArrayOf(1, 2, 3, 4)
    // 可以使用区间来代替 i++ 的循环
    for (i in 0 until ints.size) {
        println(ints[i])
    }
    // ints.indices 等价于 0 until ints.size
    // Kotlin 中推荐使用 ints.indices
    for (i in ints.indices) {
        println(ints[i])
    }