Kotlin 概述
-
Kotlin 由 JetBrains 开发,是一种在 JVM(Java 虚拟机)上运行的静态类型编程语言
-
Kotlin 旨在提高开发者的编码效率和安全性,同时保持与 Java 的高度互操作性
-
Kotlin 是 Android 应用开发的首选语言,也可以与 Java 一样用于服务器端开发
一、数组的创建
1、基本类型数组创建
- 使用工厂函数创建
val byteArray: ByteArray = byteArrayOf(1, 2, 3)
val shortArray: ShortArray = shortArrayOf(1, 2, 3)
val intArray: IntArray = intArrayOf(1, 2, 3)
val longArray: LongArray = longArrayOf(1L, 2L, 3L)
val floatArray: FloatArray = floatArrayOf(1f, 2f, 3f)
val doubleArray: DoubleArray = doubleArrayOf(1.0, 2.0, 3.0)
val charArray: CharArray = charArrayOf('a', 'b', 'c')
val booleanArray: BooleanArray = booleanArrayOf(true, false, true)
// 使用工厂函数创建空数组
val intArr1 = emptyArray<Int>()
// 创建指定大小的数组(元素初始化为 null)
val intArr2 = arrayOfNulls<Int>(5)
- 使用构造函数创建
// 创建大小为 10 的数组,初始化为 0
val intArray1: IntArray = IntArray(10)
// 创建大小为 10 的数组,使用 lambda 表达式初始化
val intArray2: IntArray = IntArray(10) {
it * 2
}
2、非基本类型数组创建
- 使用工厂函数创建
val stringArray: Array<String> = arrayOf("a", "b", "c")
// 使用工厂函数创建空数组
val stringArr1 = emptyArray<String>()
// 创建指定大小的数组(元素初始化为 null)
val stringArr2 = arrayOfNulls<String>(5)
- 使用构造函数创建
// 创建大小为 10 的数组,使用 lambda 表达式初始化
val stringArray: Array<String> = Array(10) {
"Hello, $it"
}
二、数组元素的访问与修改
- 使用方括号访问与修改
val intArray: IntArray = intArrayOf(1, 2, 3)
println(intArray[0])
intArray[0] = 10
println(intArray[0])
# 输出结果
1
10
- 使用 set 方法访问与修改
val intArray: IntArray = intArrayOf(1, 2, 3)
println(intArray[0])
intArray.set(0, 10)
println(intArray[0])
# 输出结果
1
10
三、数组遍历
- 使用 for 循环遍历
val numbers: IntArray = intArrayOf(1, 2, 3)
for (number in numbers) {
println(number)
}
# 输出结果
1
2
3
- 使用索引遍历
val numbers: IntArray = intArrayOf(1, 2, 3)
for (i in numbers.indices) {
println(numbers[i])
}
# 输出结果
1
2
3
- 使用 withIndex 遍历
val numbers: IntArray = intArrayOf(1, 2, 3)
for ((index, value) in numbers.withIndex()) {
println("$index: $value")
}
# 输出结果
0: 1
1: 2
2: 3
- 使用 forEach 遍历
val numbers: IntArray = intArrayOf(1, 2, 3)
numbers.forEach { println(it) }
# 输出结果
1
2
3
- 使用 forEachIndexed 遍历
val numbers: IntArray = intArrayOf(1, 2, 3)
numbers.forEachIndexed { index, value ->
println("$index: $value")
}
# 输出结果
0: 1
1: 2
2: 3
四、数组操作
- 数组转换为 List
val numbers = intArrayOf(1, 2, 3, 4, 5)
val list = numbers.toList()
println(list)
# 输出结果
[1, 2, 3, 4, 5]
- 数组切片
val numbers = intArrayOf(1, 2, 3, 4, 5)
val slice = numbers.sliceArray(1..3)
println(slice.contentToString())
# 输出结果
[2, 3, 4]
- 数组过滤
val numbers = intArrayOf(1, 2, 3, 4, 5)
val evens = numbers.filter { it % 2 == 0 }.toIntArray()
println(evens.contentToString())
# 输出结果
[2, 4]
- 数组映射
val numbers = intArrayOf(1, 2, 3, 4, 5)
val squares = numbers.map { it * it }.toIntArray()
println(squares.contentToString())
# 输出结果
[1, 4, 9, 16, 25]
- 数组排序
val numbers = intArrayOf(3, 4, 5, 1, 2)
// 升序
val sorted = numbers.sortedArray()
println(sorted.contentToString())
// 降序
val sortedDesc = numbers.sortedArrayDescending()
println(sortedDesc.contentToString())
# 输出结果
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
- 数组查找
val numbers = intArrayOf(1, 2, 3, 4, 5)
val firstEven = numbers.find { it % 2 == 0 }
println(firstEven)
val anyGreaterThan10 = numbers.any { it > 10 }
println(anyGreaterThan10)
# 输出结果
2
false
五、多维数组
- 创建二维数组
// 3 * 3 的二维数组,初始化为 0
val matrix = Array(3) { IntArray(3) }
- 初始化二维数组
val matrix = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6),
intArrayOf(7, 8, 9)
)
println(matrix[1][0])
println(matrix[1][1])
println(matrix[1][2])
# 输出结果
4
5
6
六、数组与可变参数
- 使用 vararg 关键字表示可变参数,本质上就是数组
fun printAll(vararg messages: String) {
for (m in messages) println(m)
}
printAll("Hello", "World", "Kotlin")
val array = arrayOf("a", "b", "c")
printAll(*array)
# 输出结果
Hello
World
Kotlin
a
b
c