在Java中,数组可以这样初始化:
int numbers[] = new int[] {10, 20, 30, 40, 50}
Kotlin的数组初始化是怎样的?
在Java中,数组可以这样初始化:
int numbers[] = new int[] {10, 20, 30, 40, 50}
Kotlin的数组初始化是怎样的?
当前回答
你可以这样做:
val numbers = intArrayOf(10, 20, 30, 40, 50)
or
val numbers = arrayOf<Int>(10, 20, 30, 40, 50)
also
val numbers = arrayOf(10, 20, 30, 40, 50)
其他回答
val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50)
详见Kotlin -基本类型。
你也可以提供一个初始化函数作为第二个参数:
val numbers = IntArray(5) { 10 * (it + 1) }
// [10, 20, 30, 40, 50]
在Java中,数组可以这样初始化:
int numbers[] = new int[] {10, 20, 30, 40, 50}
但是在Kotlin中,数组初始化的方式有很多,比如:
任何泛型类型的数组都可以使用arrayOf()函数:
val arr = arrayOf(10, 20, 30, 40, 50)
val genericArray = arrayOf(10, "Stack", 30.00, 40, "Fifty")
使用Kotlin的实用函数可以初始化数组
val intArray = intArrayOf(10, 20, 30, 40, 50)
Kotlin有专门的类来表示基本类型的数组,没有装箱开销。例如- IntArray, ShortArray, ByteArray等。我需要说明,这些类与父Array类没有继承关系,但它们具有相同的方法和属性集。它们中的每一个都有相应的工厂函数。所以,要在Kotlin中初始化一个数组,你只需要键入以下内容:
val myArr: IntArray = intArrayOf(10, 20, 30, 40, 50)
...或者这样:
val myArr = Array<Int>(5, { i -> ((i + 1) * 10) })
myArr.forEach { println(it) } // 10, 20, 30, 40, 50
现在你可以使用它:
myArr[0] = (myArr[1] + myArr[2]) - myArr[3]
你可以简单地使用现有的标准库方法,如下所示:
val numbers = intArrayOf(10, 20, 30, 40, 50)
使用一个特殊的构造函数可能是有意义的:
val numbers2 = IntArray(5) { (it + 1) * 10 }
你传递一个大小和一个lambda来描述如何初始化这些值。以下是文档:
/**
* Creates a new array of the specified [size], where each element is calculated by calling the specified
* [init] function. The [init] function returns an array element given its index.
*/
public inline constructor(size: Int, init: (Int) -> Int)
我的回答补充了@maroun,这些是初始化数组的一些方法:
使用数组
val numbers = arrayOf(1,2,3,4,5)
使用严格的数组
val numbers = intArrayOf(1,2,3,4,5)
混合矩阵类型
val numbers = arrayOf(1,2,3.0,4f)
嵌套数组
val numbersInitials = intArrayOf(1,2,3,4,5)
val numbers = arrayOf(numbersInitials, arrayOf(6,7,8,9,10))
能够从动态代码开始
val numbers = Array(5){ it*2}