首页 文章

什么's the Kotlin equivalent of Java' s String []?

提问于
浏览
94

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

现在我想知道,有没有 StringArray 相当于Java的 String[]

5 回答

  • 0

    String 没有特殊情况,因为 String 是JVM上的普通参照类型,与Java primitives (int, double, ...)形成对比 - 将它们存储在引用中Array<T>需要boxing them into objects like Integer and Double . 像Kotlin中的IntArray这样的专用数组的目的是存储非盒装基元,摆脱装箱和拆箱开销(与Java int[] 而不是 Integer[] 相同) .

    您可以使用 Array<String> (和 Array<String?> 表示nullables),这相当于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

  • 144

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

  • 7

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

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

    所以 int[]IntArray 有关,其中 Integer[]Array<Int> 有关 .

  • 3

    此示例在Android中完美运行

    在kotlin中,您可以使用lambda表达式 . Kotlin Array构造函数定义是:

    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
    

    希望这可以帮助

相关问题