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
<String?>
(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】:使用 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<T>
中需要 boxing them into objects like Integer
and Double
。 Kotlin 中像 IntArray
这样的专用数组的目的是存储未装箱的原语,摆脱装箱和拆箱开销(与 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")
另见:Arrays in the language reference
【讨论】:
【参考方案7】:对于Strings
和其他类型,您只需使用Array<*>
。
IntArray
和其他人存在的原因是为了防止自动装箱。
所以int[]
与IntArray
相关,其中Integer[]
与Array<Int>
相关。
【讨论】:
【参考方案8】:这些类型的存在是为了让您可以创建基元数组,而不是盒装类型。由于 String 在 Java 中不是原语,因此您可以在 Kotlin 中使用 Array<String>
等同于 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