【发布时间】:2016-05-17 03:43:05
【问题描述】:
如何像在 java 中一样创建数组?
int A[] = new int[N];
如何在 Kotlin 中做到这一点?
【问题讨论】:
-
我知道你在问
int,但是对于对象,有stackoverflow.com/questions/32679060/…
标签: java arrays arraylist kotlin
如何像在 java 中一样创建数组?
int A[] = new int[N];
如何在 Kotlin 中做到这一点?
【问题讨论】:
int,但是对于对象,有stackoverflow.com/questions/32679060/…
标签: java arrays arraylist kotlin
根据reference,数组的创建方式如下:
对于 Java 的原始类型,有不同的类型 IntArray、DoubleArray 等,它们存储 unboxed 值。
它们是用相应的构造函数和工厂函数创建的:
val arrayOfZeros = IntArray(size) //equivalent in Java: new int[size]
val numbersFromOne = IntArray(size) { it + 1 }
val myInts = intArrayOf(1, 1, 2, 3, 5, 8, 13, 21)
第一个与 Java 中的类似,它只是创建一个填充有默认值的原始数组,例如Int 为零,false 为 Boolean。
非原始数组由Array<T> 类表示,其中T 是项目类型。
T 仍然可以是 Java 中的基本类型之一(Int、Boolean、...),但其中的值将等效于 Java 的 Integer、Double 等装箱。
另外,T 可以同时是 nullable and non-null,例如 String 和 String?。
这些都是以类似的方式创建的:
val nulls = arrayOfNulls<String>(size) //equivalent in Java: new String[size]
val strings = Array(size) { "n = $it" }
val myStrings = arrayOf("foo", "bar", "baz")
val boxedInts = arrayOfNulls<Int>(size) //equivalent in Java: new Integer[size]
val boxedZeros = Array(size) { 0 }
【讨论】:
Array<Int>(size) 无法编译。那是因为你不能在不提供元素的情况下创建一个不可为空的数组。
【讨论】:
在 Kotlin 中,创建大小为 N 的 IntArray 很简单。使用 IntArray(n) 或适当的类型,如热键答案中详细说明的那样。
使用固定大小的数组时,可以使用Kotlin Destructuring
// Create fixed sized array
val point = IntArray(2)
// Access values directly
val (x, y) = point
在这种情况下,x 将从索引 0 获取,y 从索引 1 获取,等等。
【讨论】:
您可以使用IntArray 来创建它,就像变量声明一样
val A = IntArray(N)
【讨论】:
val A = FloatArray(N) //N是ar的大小
【讨论】: