区间在Java中是没有这个概念的,它在Kotlin中是特有的。

一、区间的创建

  • 什么是区间
    区间是数学上的一个表示范围的概念。

  • 区间的类型

    • 闭区间
      闭区间是指包含起止值的区间。

      例:设 a,b 是两个实数,且 a ≤ b,满足 a ≤ x ≤ b 的实数 x 的集合,
      表示为 [ a,b ],叫做闭区间

    • 开区间
      开区间是指不包含起止值的区间。

      例:设 a,b 是两个实数,且 a ≤ b,满足 a < x <b 的实数 x 的集合,
      表示为 ( a,b ),叫做开区间

    • 半开区间
      半开区间是指包含起始值或终止值得区间(也叫前半开区间、后半开区)。

      例:设 a,b 是两个实数,且 a ≤ b,满足 a ≤ x <b,a <x ≤ b 的实数 x 的集合,
      分别表示为 [ a,b ),( a,b ],叫做半开区间

    • 倒序区间
      区间的值由大到小排列。

  • 区间如何创建

    • 创建闭区间
      val intRange = 1..10 // [1,10]
      val charRange = 'a'..'z' // [a,z]
      val longRange = 1L..100L // [1L,100L]
      
    • 创建开区间(半开区间)
      // 前闭后开区间,不包含结束值
      val intRangeExclusive = 1 until 10 // [1,10)
      val charRangeExclusive = 'a' until 'z' // [a,z)
      val longRangeExclusive = 1L until 100L // [1L,100L)
      
    • 创建倒序区间
      // 区间值由大到小
      val intRangeReverse = 10 downTo 1 // [10,9...,1]
      val charRangeReverse = 'z' downTo 'a' // [z,a]
      val longRangeReverse = 100L downTo 1L // [100L,1L]
      
    • 区间值的打印
      通过println(range.joinToString())方法打印即可。

二、区间的步长

在创建区间时,有时候我们希望区间值之间以固定的间隔进行跳跃,例如原先排列为1,2,3,4,...,10的区间想变成1,3,5,7,...,9的区间,这个时候我们可以通过设置区间的步长(即两两之间的间隔)来达到预期。

// 区间步长的使用
val intRangeWithStep = 1...10 step 2 // [1,3,5,...,9]
val charRangeWithStep = 'a'...'z' step 2 // [a,c,e,...,y]
val longRangeWithStep = 1L...100L step 2 // [1L,3L,...,99L]

三、区间的迭代

区间的迭代方式类似于数组的迭代方式。

for(element in intRange){
    println(element)
}

intRange.foreach{
    println(it)
}

四、区间的包含关系

if(3 in intRage){
    println("3 in range 'intRange'")
}

if(12 !in intRange){
    println("12 not in range 'intRange'")
}