Kotlin区间
一、区间类型体系
Kotlin通过标准库提供完备的区间类型体系,包含IntRange、LongRange、CharRange等具体实现。数学中的区间概念在编程中被具象化为可操作对象,支持离散值集合(整型、字符)和连续数值范围(浮点型)两种形态。
二、区间创建语法
-
闭区间:
start..end包含边界值val intRange = 1..10 // [1,10]整型闭区间 val charRange = 'a'..'z' // 字符闭区间 -
半开区间:
start until end前闭后开val halfOpen = 1 until 10 // [1,10)等价数学左闭右开区间 -
倒序区间:
downTo关键字val reverse = 10 downTo 1 // 递减整型区间[10,9,...,1]
三、步长控制机制
通过step扩展函数实现离散值间隔控制:
val step2 = 1..10 step 2 // 1,3,5,7,9
val charStep = 'a'..'z' step 3 // a,d,g,j...
离散特性限制:浮点型区间(DoubleRange/FloatRange)不支持步长设置,因其表示连续数值范围。
四、核心操作特性
-
包含判断
println(5 in 1..10) // true println(3.14 in 1.0..5.0) // 连续区间包含判断 -
迭代遍历
for (i in 1..5) { print("$i ") } // 输出:1 2 3 4 5 -
数组索引遍历
val arr = arrayOf("A","B","C") for (i in arr.indices) { // indices返回IntRange println(arr[i]) }
五、浮点区间特性
- 不可迭代性:浮点区间属于连续数学区间,无法通过
iterator()遍历 - 范围判断:支持
in操作符进行边界检查println(2.718 in 1.0..3.0) // 输出true
六、特殊类型支持
-
无符号类型:
UIntRange等无符号区间val uintRange = 1u..10u step 2 -
自定义类型:实现
Comparable接口的类型均可创建区间val dateRange = LocalDate.of(2023,1,1)..LocalDate.of(2023,12,31)
七、数学概念对应
| 数学表示 | Kotlin实现 | 特性描述 |
|---|---|---|
| [a,b] | a..b | 包含端点,离散可迭代 |
| [a,b) | a until b | 前闭后开,索引遍历常用 |
| (a,b] | 需自定义实现 | 通过比较逻辑组合实现 |
| 连续区间 | 浮点型区间 | 不可迭代,仅范围判断 |
本指南融合数学理论与编程实践,完整呈现Kotlin区间操作的核心机制。通过类型化区间对象和丰富的操作符重载,Kotlin将数学抽象转化为可执行的程序逻辑,极大提升了范围操作的表达力与安全性。