2017-05-29 49 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>

相關問題