大多数语言都使用一下方式表示数组的:
int[] arr = {1,2,3,4,5}
而在Kotlin中却是用一个专门的类型来表示数组的:Array
public class Array<T> {
public inline constructor(size: Int, init: (Int) -> T)
public operator fun get(index: Int): T
public operator fun set(index: Int, value: T): Unit
public val size: Int
public operator fun iterator(): Iterator<T>
}
数组声明
var asc = Array(3,{it ->0})
定义了一个包含3个元素的数组,并且每个元素的值为0.Kotlin会自动推断数组的类型,也可以显式标记数组的类型:
var asc:Array<Int> = Array(3,{it ->0})
数组的读写
var asc = Array(3,{it ->0})
//写
asc[0] = 1 / asc.set(0,1)
asc[1] = 4
asc[2] = 8
//读
for(i in asc.indices){
println("asc[$i] = ${asc.get(i)}")
}
声明引用型数组
var asc = Array<Animal?>(3,{it ->null})//声明了包含3个元素的Animal类型的数组
还有另外一种方式可以声明并赋值为null的方式:
var asc = arrayOfNulls<Animal>(3) //asc的类型为Array<Animal?>
多维数组
相对比其他语言的多维数组声明而言,Kotlin的还是比较复杂的
//java中声明二维数组
int[][] a = new int[3][4]
//Kotlin中声明二维数组
var asc2d = Array(3,{Array(3,{it -> 0}))
asc[0][0] = 1
Kotlin中的数组与Java中的数组转换
使用引用型数组的时候,Kotlin和Java的对应关系为:
Array<Animal> <===> Animal[]
Array<Int> <===> Integer[]
但是对于Java基本类型,Kotlin却不能使用Array<Int>对应int[],Kotlin定义的其他的类与之对应:
Kotlin | Java |
---|---|
ByteArray | byte[] |
CharArray | char[] |
ShortArray | short[] |
IntArray | int[] |
LongArray | long[] |
FloatArray | float[] |
DoubleArray | double[] |
BooleanArray | boolean[] |
数组与列表转换
//数组转换为列表
var asc = arrayOfNulls<Animal>(3)
asc.asList //ArrayList<Animal>
//列表转换为数组
var list= ArrayList<Animal>()
list.add(Animal("dog"))
list.add(Animal("cat"))
var asc2 = arrayOfNulls<Animal>(list.size)
list.toArray(asc2)
网友评论