kotlin精讲-第5章(1)区间介绍&表示
区间介绍
区间又叫Range,在数学里,区间通常是指一类实数集合,分为开区间、闭区间、半开半闭区间。
开区间指的是区间边界的两个值不包括在内,比如(a,b);闭区间指的是区间边界的两个值包括在内,[a,b] ;半开半闭区间指的是开区间一边的边界值不包括在内,而闭区间一边的边界值包括在内,[a,b)、(a,b]。[a,b)被称作左闭右开区间,(a,b]被称作左开右闭区间。
在Kotlin里面,对区间表示提供了方便的支持。
在Kotlin里面,区间表示相关的类有IntRange、LongRange、CharRange,相关的接口有ClosedRange。这三个类都实现了ClosedRange接口,参考截图:

区间表示
kotlin闭区间和左闭右开的表示
区间虽然分为开区间、闭区间、左开右闭区间、左闭右开。但是Kotlin里面只支持“闭区间”和和“左闭右开”区间的表示。因为其实任何区间都可以转换为“闭区间”表示和“左闭右开”表示:
区间 | 案例 | 闭区间表示 | 左闭右开表示 |
---|---|---|---|
开区间 | (1,10) | [2,9] | [2,10) |
闭区间 | [1,10] | [1,10] | [1,11) |
左开右闭 | (1,10] | [2,10] | [2,11) |
左闭右开 | [1,10) | [1,9] | [1,11) |
Kotlin怎么支持闭区间表示呢? 可以通过IntRange、LongRange、CharRange三个类的构造方法直接构造,IntRange、LongRange、CharRange三个类的构造方法如下:

也可以通过rangeTo方法生成,rangeTo的方法定义如下:

当然,rangeTo方法可以被“..操作符”替代,后面我们讲了运算符重载你就会理解,现在可以先记住,下面两种形式是等价的:

Kotlin怎么支持闭区间表示呢? 通过拓展方法until参考截图:

通过截图,我们看到了很多的拓展方法,我们摘取其中一个方法的具体定义给大家看看:

区间表示案例
kotlin表示“开区间(1,10)”可以有如下4种方式,参考代码:

kotlin表示“闭区间[1,10]”可以有如下方式,参考代码:

kotlin表示“左开右闭(1,10]”可以有如下方式,参考代码:

kotlin表示“左开右闭(1,10]”可以有如下方式,参考代码:
