Java 的 String[] 的 Kotlin 等价物是啥?

Posted

技术标签:

【中文标题】Java 的 String[] 的 Kotlin 等价物是啥?【英文标题】:What's the Kotlin equivalent of Java's String[]?Java 的 String[] 的 Kotlin 等价物是什么? 【发布时间】:2017-10-29 14:35:40 【问题描述】:

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

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

【问题讨论】:

typealias StringArray = Array<String> ;) 【参考方案1】:

要在 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,  _ -> "" )

【讨论】:

【参考方案2】:

创建字符串数组的一些常用方法是

    var arr = Array(5)""

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

    var arr = arrayOfNulls&lt;String?&gt;(5)

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

    var arr = arrayOf("zero", "one", "two", "three")

当你已经知道数组的内容后,就可以直接初始化数组了。

    还有一种创建多维数组字符串的简单方法。

    var matrix = Array(5)Array(6) ""

    这就是您如何创建一个包含 5 行和 6 列的矩阵,其初始值为 空字符串。

【讨论】:

【参考方案3】:

你也可以使用:

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

例如。

【讨论】:

【参考方案4】:

此示例在 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

希望对你有帮助

【讨论】:

【参考方案5】:

使用 arrayOfarrayOfNullsemptyArray

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

【讨论】:

【参考方案6】:

String 没有特殊情况,因为String 是 JVM 上的普通引用类型,与 Java primitives (int, double, ...) 不同——将它们存储在引用 Array&lt;T&gt; 中需要 boxing them into objects like Integer and Double。 Kotlin 中像 IntArray 这样的专用数组的目的是存储未装箱的原语,摆脱装箱和拆箱开销(与 Java 相同的 int[] 而不是 Integer[])。

您可以使用Array&lt;String&gt;(和Array&lt;String?&gt; 用于可空值),相当于Java 中的String[]

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

【讨论】:

【参考方案7】:

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

所以int[]IntArray 相关,其中Integer[]Array&lt;Int&gt; 相关。

【讨论】:

【参考方案8】:

这些类型的存在是为了让您可以创建基元数组,而不是盒装类型。由于 String 在 Java 中不是原语,因此您可以在 Kotlin 中使用 Array&lt;String&gt; 等同于 Java String[]

【讨论】:

以上是关于Java 的 String[] 的 Kotlin 等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin的报错提示:java.lang.NumberFormatException: For input string: ““

Kotlin的报错提示:java.lang.NumberFormatException: For input string: ““

深入kotlin - 与Java互操作:kotlin调用java

深入kotlin - 与Java互操作:kotlin调用java

深入kotlin - 与Java互操作:kotlin调用java

深入kotlin - 与Java互操作:kotlin调用java