2017-05-29 50 views
36

我看到Kotlin有ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray,这相当于Java中的byte[], short[], int[],char[], double[], float[]什么是Java的String []的Kotlin等价物?

现在我想知道,是否有任何StringArray相当于Java的String[]

+3

'typealias字符串数组=阵列') – marstran

回答

49

有用于String没有特殊情况,因为String是JVM上的一个普通的引用类型,相反与Java primitives (int, double, ...) - 它们存储在参考Array<T>需要boxing them into objects like Integer and Double。 Kotlin中的IntArray等专用阵列的目的是存储非盒装原语,摆脱装箱和拆箱开销(与Java int[]相同,而不是Integer[])。

可以使用(对于nullables和Array<String?>Array<String>,这相当于String[]在Java中:

val stringsOrNulls = arrayOfNulls<String>(10) // returns Array<String?> 
val someStrings = Array<String>(5) { "it = $it" } 
val otherStrings = arrayOf("a", "b", "c") 

参见:Arrays in the language reference

1

可以使用arrayOf()功能:

val literals = arrayOf("str1", "str2", "str3") 
+0

'arrayof'返回'Array ',是'Array '与Java中的String []'相等吗? – chancyWu

+0

不,kotlin字符串不是原始类型。其数组 in kotlin与Java中的String []相同 – chandil03

+0

@chancyWu yes。 'Array '在Kotlin中相当于Java中的'Whatever []',IntArray','LongArray'等等等于int []','long []',... –

6

这些类型有那么您可以创建的图元的阵列,而不是盒装的类型。由于String不是Java中的原语,因此您可以在Kotlin中使用Array<String>作为Java String[]的等效项。

3

对于Strings和其他类型,您只需使用Array<*>。 原因IntArray和其他存在是为了防止自动装箱。

因此int[]涉及IntArray其中Integer[]涉及Array<Int>

相关问题