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] = 10println(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