Kotlin学习之数组
@(Kotlin学习)
Kotlin中的数组采用Array<T>
类定义,抛弃了类C语言中“元素类型[]”的定义方式。
数组在Kotlin中使用Array类来表示,它定义了get
和set
函数和size
属性,以及一些其他有用的成员函数。
一、创建一个数组
一般创建数组时不会使用Array类的构造函数,需要分三种情况创建数组;
1.1创建已知所有元素的数组:
当需要把一组已知的数据放在一个新建的数组里,使用kotlin.arrayOf()函数。
arrayOf()参数接受数量不定的T类型的元素,病使用它们创建一个数组,然后返回这个数组。如下例:
val a = arrayOf("Hello", "kotlin")
arrayOf()函数创建了一个Array对象,包含两个元素”Hello”,”kotlin”,并将它赋值给了变量a。
如果想创建一个长度指定,每个值都为null的数组,就要用kotlin.arrayOfNulls()函数;
val nulls:Array<String?> = arrayOfNulls(2)
如果想创建一个长度为10的Int类型数组,包含从1到10,如下:
val ints = Array<Int>(10, { i -> i + 1 })
- 第一个参数:数组的长度;
- 第二个参数:指定每个元素的方法(Lambda表达式);
1.2创建一个空数组
Kotlin提供了kotlin.emptyArray()函数来创建空的数组,这个函数创建一个长度为0的null数组,然后将它强制转换为指定类型的数组。
val emp:Array<String?> = emptyArray()
可以使用arrayOfNulls(0)替代emptyArray()函数:
val emp2 = arrayOfNulls<String?>(0)
println(Arrays.equals(emp,emp2))//输出结果为true
1.3创建基本类型数组
Kotlin对于基本类型数组有特殊的优化,建议在涉及到基本类型的数组时使用下面列出的类,而不使用Array类。
对于Int类型数组,建议使用IntArray类代替Array类:
val ints1 = intArrayOf(1, 2, 3)
val ints2 = arrayOf(1, 2, 3)
但是要注意,IntArray类并不是Array类的子类,所以两个数组并不是相同的对象:
println(Arrays.equals(ints1,ints2))//编译出错
对于其他基本数据类型,也有相同的数组类,它们有与Array类一样的操作方式。