我如何像在Java中那样创建数组?
int A[] = new int[N];
如何在Kotlin中做到这一点?
Answers:
根据参考资料,可以通过以下方式创建数组:
对于Java的基本类型有不同的类型IntArray
,DoubleArray
等等。它存储拆箱值。
它们是使用相应的构造函数和工厂函数创建的:
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
可以像和一样为可为空和为非空。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等中获取。
int
,但是对于Objects,有stackoverflow.com/questions/32679060/…–