在Java中,可以像这样初始化数组:
int numbers[] = new int[] {10, 20, 30, 40, 50}
Kotlin的数组初始化是什么样子的?
val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50)
详情请参见Kotlin - 基本类型。
您也可以将初始化函数作为第二个参数提供:
val numbers = IntArray(5) { 10 * (it + 1) }
// [10, 20, 30, 40, 50]
intArrayOf
而不是arrayOf
是否更好?因此,IntArray
比Array<Int>
有什么优势? - Lars BlumberglistOf(10, 20, 30, 40, 50)
。 - CristanintArrayOf()
,longArrayOf()
,arrayOf()
等)时,您不能使用默认值(或将所有值初始化为所需值)来初始化给定大小的数组,而是需要通过调用相应的类构造函数进行初始化。// Array of integers of a size of N
val arr = IntArray(N)
// Array of integers of a size of N initialized with a default value of 2
val arr = IntArray(N) { i -> 2 }
IntArray(N) {i -> 2}
,甚至(当使用常量进行初始化时)可以写成IntArray(N) {2}
。 - David SorokoKotlin中有多种方法。
var arr = IntArray(size) // construct with only size
然后从用户或其他集合或任何您想要的地方简单地初始化值。
var arr = IntArray(size){0} // construct with size and fill array with 0
var arr = IntArray(size){it} // construct with size and fill with its index
我们也可以使用内置函数创建数组,例如 -
var arr = intArrayOf(1, 2, 3, 4, 5) // create an array with 5 values
另一种方式
var arr = Array(size){0} // it will create an integer array
var arr = Array<String>(size){"$it"} // this will create array with "0", "1", "2" and so on.
您也可以使用doubleArrayOf()
或DoubleArray()
或任何原始类型来替代Int。
var arr = IntArray(size, { it * 1 } )
is the same as var arr = IntArray(size){it}
- Det这里有个例子:
fun main(args: Array<String>) {
val arr = arrayOf(1, 2, 3);
for (item in arr) {
println(item);
}
}
您也可以使用在线测试环境来测试语言功能。
arrayOf()
, intArrayOf()
, charArrayOf()
, booleanArrayOf()
, longArrayOf()
函数来创建数组。var Arr1 = arrayOf(1,10,4,6,15)
var Arr2 = arrayOf<Int>(1,10,4,6,15)
var Arr3 = arrayOf<String>("Surat","Mumbai","Rajkot")
var Arr4 = arrayOf(1,10,4, "Ajay","Prakesh")
var Arr5: IntArray = intArrayOf(5,10,15,20)
老问题,但如果您想使用范围:
var numbers: IntArray = IntRange(10, 50).step(10).toList().toIntArray()
产生的结果与以下几乎相同:
var numbers = Array(5, { i -> i*10 + 10 })
结果:10,20,30,40,50
我认为第一个选项更易读一些。两个都可以使用。
Kotlin有专门的类来表示原始类型数组,避免装箱开销。例如- IntArray
,ShortArray
,ByteArray
等。需要说明的是,这些类没有继承关系,但它们具有相同的方法和属性集合。每个类还有对应的工厂函数。因此,在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]
var numbers=Array<Int>(size,init)
var numbers=IntArray(size,init)
var numbers= intArrayOf(1,2,3)
例子
var numbers = Array<Int>(5, { i -> 0 })
init代表默认值(初始化)
Array<Int>()
和IntArray()
中init
的示例,那将会很有帮助。目前您的回答并没有太多帮助。 - Lars Blumberg我认为有一件值得提及的事情,在文档中不够直观,那就是当你使用工厂函数创建一个数组并指定它的大小时,该数组会被初始化为与其索引值相等的值。例如,在这样一个数组中:
val array = Array(5, { i -> i })
,分配的初始值是[0,1,2,3,4]
,而不是[0,0,0,0,0]
。这就是为什么从文档中,val asc = Array(5, { i -> (i * i).toString() })
会产生一个答案["0", "1", "4", "9", "16"]
的原因。
val numbers = IntArray(5, { 10 * (it + 1) })
5是Int数组的大小。Lambda函数是元素初始化函数。'it'范围在[0,4],加1使范围在[1,5]
原始函数为:
/**
* An array of ints. When targeting the JVM, instances of this class are
* represented as `int[]`.
* @constructor Creates a new array of the specified [size], with all elements
* initialized to zero.
*/
public class IntArray(size: Int) {
/**
* 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)
...
}
在Arrays.kt中定义的IntArray类
array()
函数,而不是给出源代码示例:为了创建一个数组,我们可以使用库函数array()
,并将项目值传递给它,这样array(1, 2, 3)
将创建一个数组[1, 2, 3]
。 - Lars Blumbergval numbers = 1..5
,它会给出从 1 到 5 的整数范围。 - Sylhare