什么是Kotlin相当于Java的String []?

时间:2017-05-29 10:10:12

标签: kotlin

我看到Kotlin有ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray,相当于Java中的byte[], short[], int[],char[], double[], float[]

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

8 个答案:

答案 0 :(得分:153)

String没有特殊情况,因为String是JVM上的普通参照类型,与Warnings of valid HTML5 attributes in Eclipse相反 - 将它们存储在引用Java primitives (int, double, ...)中需要{ {3}}。 Kotlin中Array<T>等专用数组的目的是存储非盒装基元,摆脱装箱和拆箱开销(与Java int[]相同而不是Integer[])。

您可以使用Array<String>(和Array<String?>表示无效),这相当于Java中的String[]

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

另请参阅:boxing them into objects like Integer and Double

答案 1 :(得分:8)

使用 arrayOf arrayOfNulls emptyArray

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

答案 2 :(得分:7)

这些类型是存在的,因此您可以创建基元的数组,而不是盒装类型。由于String不是Java中的原语,因此您可以在Kotlin中使用Array<String>作为Java String[]的等价物。

答案 3 :(得分:3)

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

所以int[]IntArray Integer[]Array<Int>相关。

答案 4 :(得分:2)

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

第一种方法:

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, { _ -> "" })

答案 5 :(得分:1)

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

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

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

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

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

  1. var arr = arrayOf(“零”,“一个”,“两个”,“三个”)

如果您已经知道数组的内容,则可以直接初始化数组。

  1. 还有一种简便的方法来创建字符串的多维数组

    变量矩阵= Array(5){Array(6){“”}}

    这是创建具有5行6列初始值的矩阵的方法 空字符串。

答案 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

希望这会有所帮助

答案 7 :(得分:0)

您也可以使用:

val frases = arrayOf("texto01","texto02 ","anotherText","and ")

例如。