在Java中,数组可以这样初始化:

int numbers[] = new int[] {10, 20, 30, 40, 50}

Kotlin的数组初始化是怎样的?


当前回答

你可以简单地使用现有的标准库方法,如下所示:

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)

其他回答

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]

这个问题已经有了很好的答案。 这里是一个合并的创建int数组。

创建具有特定值的数组。 var arr = intArrayOf(12,2,21,43,23) var arr = arrayOf<Int>(12,2,21,43,23)

[12, 2, 21, 43, 23]

填充特定元素。这里是1。 var arr = IntArray(5).apply{fill(1)} val arr = IntArray(5){1}

[1, 1, 1, 1, 1]

用小于20的随机数填充大小为5的数组 val arr = IntArray(5) {Random.nextInt(20)}

[0, 2, 18, 3, 12]

根据位置填充数组元素。 这个数组是5的倍数。 val arr = IntArray(5) {i -> (i + 1) * 5}

[5, 10, 15, 20, 25]

你可以试试这个:

var a = Array<Int>(5){0}

通过这种方式,可以在koltin中初始化int数组。

 val values: IntArray = intArrayOf(1, 2, 3, 4, 5,6,7)

老问题了,但如果你想使用一个范围:

var numbers: IntArray = IntRange(10, 50).step(10).toList().toIntArray()

产生几乎相同的结果:

var numbers = Array(5, { i -> i*10 + 10 })

结果:10,20,30,40,50

我认为第一个选项更有可读性。这两个工作。