【问题标题】: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> ;)

标签: java kotlin


【解决方案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】:

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

    1. var arr = Array(5){""}

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

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

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

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

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

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

      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】:

          使用 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()
          

          【讨论】:

            【解决方案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[]。

                【讨论】:

                  猜你喜欢
                  • 2016-04-10
                  • 1970-01-01
                  • 2022-11-15
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-12-26
                  • 2017-03-14
                  相关资源
                  最近更新 更多