Kotlin创建数组就是创建Array类的实例,Kotlin即可允许通过Array类的构造器来创建实例,也可以通过arrayOf()等工具函数来创建实例。
//静态初始化数组(可以是八种基本数据类型)
var intArrayOf = intArrayOf(1, 2, 3) //返回IntArray
var doubleArrayOf = doubleArrayOf(1.0, 2.1, 3.12)
intArrayOf.set(0, 4) //可以修改指定索引位置元素
intArrayOf[0] = 4 //同上是等价的
//Kotlin采用xxArray数组(包含8种基本类型的数组)。
val intArray = IntArray(5)
intArray[0] = 1
// 创建包含指定元素的数组(相当于Java数组的静态初始化)
var array = arrayOf("Java", "Kotlin", "C", "C++")
var intArr = arrayOf(1, 20, 3, 14, 5)
var arr = arrayOf(1, 2, 100, -10, 2.0, "sss")
//创建指定长度、元素为null的数组(相当于Java数组的动态初始化)
var nullArrStr = arrayOfNulls<String>(5)
var nullArrInt = arrayOfNulls<Int>(6)
//对应索引位置赋值
nullArrInt[0] = 1
nullArrInt[1] = 2
nullArrInt[2] = 3
//创建空数组,只读,不能赋值(实际上它是大小为0继承自arrayOfNulls,返回Array类型)
val emptyArray = emptyArray<Int>()
//可以设置初始值,默认为空
var strArr4 = Array(6) { "" }
strArr4[0] = "sdlf"
//第二个参数以lambda表达式初始化数组元素
var arr4 = Array(5, { (it * 2 + 97).toChar() })
var arr4 = Array(5) { (it * 2 + 97).toChar() }//同上
//默认赋值为0
var arrayInt = Array(5) { 0 }
arrayInt[0] = 12
var array = arrayOf("Java", "Kotlin", "C", "C++")
//使用两种方式获取数组元素
println(arr1[1])
println(arr1.get(1))
//使用两种方式修改数组元素
arr1[1] = "Python"
arr1.set(2, "Go")
//arr1.contentToString()等同Arrays.toString(arr1)
println(arr1.contentToString())
输出结果:
Kotlin
Kotlin
[Java, Python, Go, C++]
var array = arrayOf("Java", "Kotlin", "C", "C++")
for (i in arr4) {
println("---array=$i")
}
//带索引方式
for (i in arr1.indices) {
println("index=$i--${arr1[i]}")
}
//还可以使用数组的withIndex()方法来同时访问数组的索引和元素,该方法返回一个Iterable对象
for ((index, value) in arr1.withIndex()) {
println("索引为${index}的元素是:${value}")
}
输出结果:
---array=Java
---array=Python
---array=Go
---array=C++
index=0--Java
index=1--Python
index=2--Go
index=3--C++
索引为0的元素是:Java
索引为1的元素是:Python
索引为2的元素是:Go
索引为3的元素是:C++
还可以使用in、!in来检查某个索引是否位于数组的索引区间内。
val arrayOf = arrayOf<Int>(1, 2, 3)
//将返回false
println("在数组arrayOf索引范围内:${4 in arrayOf.indices}")
var array = arrayOf("Java", "Kotlin", "C", "C++")
// 迭代器遍历数组1
val it = arr1.iterator()
for (item in it.iterator()) {
println(item)
}
// 迭代器遍历数组2
val it1 = arr1.iterator()
it1.forEach {
println(it)
}
// forEach遍历数组
arr1.forEach {
println(it)
}
输出结果:
Java
Python
Go
C++
//Kotlin可以使用arrayOf()方法来初始化二维数组。
val arrayOf = arrayOf(arrayOfNulls<Int>(5), Array(4) { "arr" })
//或者采用把arrayOfNulls使array当成一维数组进行初始化,初始化array是一个长度为4的数组,默认是空的
//array数组的元素又是Array类型数组,形成二维数组
var array = arrayOfNulls<Array<Int>>(4)
//把a数组当成一维数组,遍历a数组的每个数组元素
for (i in array.indices) {
println("array ${array[i]}")
}
//初始化a数组的第一个元素
array[0]= arrayOf(2,5,3)
//访问array数组的第一个元素所指数组的第二个元素
array[0]?.set(1, 6)
//array数组的第一个元素是一个一维数组,遍历这个一维数组
for (i in array[0]!!.indices) {
println(array[0]?.get(i))
}
输出结果:
array null
array null
array null
array null
2
6
3
var arr1 = arrayOf("Java", "Kotlin", "C", "C++")
//通过赋值arr1数组,生成一个新的数组
val copyOf = arr1.copyOf()//全部复制
val copyOf1 = arr1.copyOf(2)//复制前两个
val copyOf2 = arr1.copyOfRange(1,2)//复制左闭右开区间
println(copyOf.contentToString())
println(copyOf1.contentToString())
println(copyOf2.contentToString())
var arr = arrayOf(1,2,3,4,5,6,7)
//将arr数组的第五个元素到第七个元素赋值为1
arr.fill(1,4,6)
//输出arr数组的元素
println("arr数组的元素为:${arr.contentToString()}")
//对数组排序
arr.sort()
println("arr数组的排序:${arr.contentToString()}")
//将来原来的数组拷贝了一下,并且长度+1,然后给数组添加新的元素
val plus = arr.plus(8)
println("arr数组的plus:${arr.contentToString()}---给定元素:${plus.contentToString()}")
输出结果:
[Java, Kotlin, C, C++]
[Java, Kotlin]
[Kotlin]
b数组的元素为:[1, 2, 3, 4, 1, 1, 7]
arr数组的plus:[1, 1, 1, 2, 3, 4, 7]---给定元素:[1, 1, 1, 2, 3, 4, 7, 8]
更多kotlin语法使用