Kotlin与Java的String []等效吗?


163

我看到Kotlin具有ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray,与byte[], short[], int[],char[], double[], float[]Java 中的等效。

现在我想知道,是否有StringArray与Java等效的东西String[]


7
typealias StringArray = Array<String>;)
marstran

Answers:


224

有没有针对特殊情况String,因为String是在JVM一个普通的参考类型,与此相反的Java原语(intdouble,...) -它们存储在一个基准Array<T>要求他们到拳击状物体IntegerDouble。像IntArrayKotlin 这样的专用数组的目的是存储非装箱的基元,从而消除装箱和拆箱的开销(与Java相同,int[]而不是Integer[])。

您可以使用Array<String>(并且Array<String?>用于nullables),这与String[]Java中的等效:

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

另请参见:语言参考中的数组


18

使用 arrayOfarrayOfNullsemptyArray

var colors_1: Array<String> = arrayOf("green", "red", "blue")
var colors_2: Array<String?> = arrayOfNulls(3)
var colors_3: Array<String> = emptyArray()

16

Array of Strings在Kotlin中创建空白,您应该使用以下六种方法之一:

第一种方法:

val empty = arrayOf<String>()

第二种方法:

val empty = arrayOf("","","")

第三种方法:

val empty = Array<String?>(3) { null }

第四种方法:

val empty = arrayOfNulls<String>(3)

第五种方法:

val empty = Array<String>(3) { "it = $it" }

第六种方法:

val empty = Array<String>(0, { _ -> "" })

9

这些类型在那里,因此您可以创建原始类型的数组,而不是盒装类型。由于String不是Java中的原始语言,因此您只能Array<String>在Kotlin中将其用作Java的等效物String[]


5

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

因此int[]涉及到与IntArray何处Integer[]有关Array<Int>


1

创建String数组的一些常用方法是

  1. var arr = Array(5){“”}

这将创建一个由5个字符串组成的数组,其初始值为空字符串。

  1. var arr = arrayOfNulls <String?>(5)

这将创建一个大小为5的数组,且初始值为null。您可以使用String数据来修改数组。

  1. var arr = arrayOf(“ zero”,“ one”,“ Two”,“ 3”)

当您已经知道数组的内容时,您可以直接初始化数组。

  1. 还有一种简单的方法可以创建字符串的多维数组

    var matrix = Array(5){Array(6){“”}}

    这样可以创建一个包含5行6列,初始值为空字符串的矩阵。


0

该示例在Android中完美运行

在kotlin中,您可以为此使用lambda表达式。Kotlin数组构造函数的定义是:

Array(size: Int, init: (Int) -> T)

计算结果为:

skillsSummaryDetailLinesArray = Array(linesLen) {
        i: Int -> skillsSummaryDetailLines!!.getString(i)
}

要么:

skillsSummaryDetailLinesArray = Array<String>(linesLen) {
        i: Int -> skillsSummaryDetailLines!!.getString(i)
}

在此示例中,字段定义为:

private var skillsSummaryDetailLinesArray: Array<String>? = null

希望这可以帮助


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.