Kotlin 中的数组是带有类型参数的类,其元素类型被指定为相应的类型参数,创建数组的方法有以下几个:
- 用 arrayOf 函数创建一个数组,包含的元素是指定为该函数的实参
- 用 arrayOfNulls 创建一个给定大小的数组,包含的元素均为 null,只能用来创建包含元素类型可空的数组
- 调用 Array 类的构造方法,传递数组的大小和一个 lambda 表达式,调用 lambda 表达式来创建每一个数组元素
//包含给定元素的字符串数组
val array1 = arrayOf("leavesC", "叶应是叶", "叶")
//初始元素均为 null ,大小为 10 的字符数组
val array2 = arrayOfNulls<String>(10)
//创建从 “a” 到 “z” 的字符串数组
val array3 = Array<String>(26) { i -> ('a' + i).toString() }
需要注意的是,数组类型的类型参数始终会变成对象类型,因此声明 Array 将是一个包含装箱类型(java.lang.Integer)的数组。如果想要创建没有装箱的基本数据类型的数组,必须使用一个基本数据类型数组的特殊类
为了表示基本数据类型的数组,Kotlin 为每一种基本数据类型都提供了若干相应的类。例如,有 IntArray、ByteArray、BooleanArray 等类型,这些类型都会被编译成普通的 Java 基本数据类型数组,比如 int[]、byte[]、boolean[] 等,这些数组中的值存储时没有进行装箱,而是使用了可能的最高效的方式
要创建一个基本数据类型的数组,有以下几种方式:
- 向对应类型的类(如 IntArray)的构造函数传递数组大小,这将返回一个使用对应基本数据类型默认值初始化好的数组
- 向对应类型的类(如 IntArray)的构造函数传递数组大小以及用来初始化每个元素的 lambda
- 向工厂函数(如 charArrayOf)传递变长参数的值,从而得到指定元素值的数组
//指定数组大小,包含的元素将是对应基本数据类型的默认值(int 的默认值是 0)
val intArray = IntArray(5)
//指定数组大小以及用于初始化每个元素的 lambda
val doubleArray = DoubleArray(5) { Random().nextDouble() }
//接收变长参数的值来创建存储这些值的数组
val charArray = charArrayOf('H', 'e', 'l', 'l', 'o')