📅  最后修改于: 2021-01-05 07:28:31             🧑  作者: Mango
数组是Int,String等相似数据类型的集合。Kotlinis中的Array本质上是可变的,具有固定大小,这意味着我们可以对数组元素执行读取和写入操作。
数组构造函数以指定的大小和init函数。初始化函数用于返回数组元素及其索引。
Array(size: Int, init: (Int) -> T)
可以使用arrayOf() , intArrayOf() , charArrayOf() , booleanArrayOf() , longArrayOf() , shortArrayOf() , byteArrayOf()函数创建Kotlin Array。
var myArray1 = arrayOf(1,10,4,6,15)
var myArray2 = arrayOf(1,10,4,6,15)
val myArray3 = arrayOf("Ajay","Prakesh","Michel","John","Sumit")
var myArray4= arrayOf(1,10,4, "Ajay","Prakesh")
var myArray5: IntArray = intArrayOf(5,10,20,12,15)
Kotlin具有set()和get()函数,可以分别直接修改和访问数组的特定元素。
set()函数用于在特定索引位置设置元素。这也可以通过在数组索引处分配元素来完成。数组get()函数用于从指定的索引中获取元素。
fun main(args: Array) {
val array1 = arrayOf(1,2,3,4)
val array2 = arrayOf(11,12,13,14)
array1.set(0,5)
array1[2] = 6
array2.set(2,10)
array2[3] = 8
for(element in array1){
println(element)
}
println()
for(element in array2){
println(element)
}
}
输出:
5
2
6
4
11
12
10
8
fun main(args: Array) {
val array1 = arrayOf(1,2,3,4)
val array2 = arrayOf(11,12,13,14)
println(array1.get(0))
println(array1[2])
println()
println(array2.get(2))
println(array2[3])
}
输出:
1
3
13
14
在此示例中,我们只是初始化一个大小为5且默认值为0的数组并遍历其元素。数组的索引值从0开始。数组的第一个元素位于索引值0,最后一个元素比数组的大小小一个。
fun main(args: Array){
var myArray = Array(5){0}
for(element in myArray){
println(element)
}
}
输出:
0
0
0
0
0
我们还可以使用其索引值重写数组的值。由于我们可以修改数组的值,所以将数组称为可变属性。
例如:
fun main(args: Array){
var myArray = Array(5){0}
myArray[1]= 10
myArray[3]= 15
for(element in myArray){
println(element)
}
}
输出:
0
10
0
15
0
还可以使用库函数(例如arrayOf(),intArrayOf()等)声明Kotlin中的数组。让我们来看一下使用arrayOf()和intArrayOf()函数的数组示例。
fun main(args: Array){
val name = arrayOf("Ajay","Prakesh","Michel","John","Sumit")
var myArray2 = arrayOf(1,10,4,6,15)
var myArray3 = arrayOf(5,10,20,12,15)
var myArray4= arrayOf(1,10,4, "Ajay","Prakesh")
var myArray5: IntArray = intArrayOf(5,10,20,12,15)
for(element in name){
println(element)
}
println()
for(element in myArray2){
println(element)
}
println()
for(element in myArray3){
println(element)
}
println()
for(element in myArray4){
println(element)
}
println()
for(element in myArray5){
println(element)
}
}
输出:
Ajay
Prakesh
Michel
John
Sumit
1
10
4
6
15
5
10
20
12
15
1
10
4
Ajay
Prakesh
5
10
15
20
25
假设当我们尝试在大于数组大小的索引位置插入元素时,会发生什么?
它将抛出ArrayIndexOutOfBoundException 。这是因为在尝试插入元素时不存在索引值。因此,数组称为固定大小长度。例如:
fun main(args: Array){
var myArray5: IntArray = intArrayOf(5,10,20,12,15)
myArray5[6]=18 // ArrayIndexOutOfBoundsException
for(element in myArray5){
println(element)
}
}
输出:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at ArrayListKt.main(Array.kt:4)
还使用索引范围(minValue..maxValue)或(maxValue..minValue)遍历Kotlin的数组元素。让我们来看一个使用范围遍历数组的示例。
fun main(args: Array){
var myArray5: IntArray = intArrayOf(5,10,20,12,15)
for (index in 0..4){
println(myArray5[index])
}
println()
for (index in 0..myArray5.size-1){
println(myArray5[index])
}
}
输出:
5
10
20
12
15
5
10
20
12
15