我看到Kotlin有 ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray ,相当于Java中的 byte[], short[], int[],char[], double[], float[] .
ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray
byte[], short[], int[],char[], double[], float[]
现在我想知道,有没有 StringArray 相当于Java的 String[] ?
StringArray
String[]
String 没有特殊情况,因为 String 是JVM上的普通参照类型,与Java primitives (int, double, ...)形成对比 - 将它们存储在引用中Array<T>需要boxing them into objects like Integer and Double . 像Kotlin中的IntArray这样的专用数组的目的是存储非盒装基元,摆脱装箱和拆箱开销(与Java int[] 而不是 Integer[] 相同) .
String
int[]
Integer[]
您可以使用 Array<String> (和 Array<String?> 表示nullables),这相当于Java中的 String[] :
Array<String>
Array<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
这些类型是存在的,因此您可以创建基元的数组,而不是盒装类型 . 由于String不是Java中的原语,因此您可以在Kotlin中使用 Array<String> 作为Java String[] 的等价物 .
使用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()
对于 Strings 和其他类型,您只需使用 Array<*> . IntArray 和其他存在的原因是为了防止自动装箱 .
Strings
Array<*>
IntArray
所以 int[] 与 IntArray 有关,其中 Integer[] 与 Array<Int> 有关 .
Array<Int>
此示例在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
希望这可以帮助
5 回答
String
没有特殊情况,因为String
是JVM上的普通参照类型,与Java primitives (int, double, ...)形成对比 - 将它们存储在引用中Array<T>需要boxing them into objects like Integer and Double . 像Kotlin中的IntArray这样的专用数组的目的是存储非盒装基元,摆脱装箱和拆箱开销(与Javaint[]
而不是Integer[]
相同) .您可以使用
Array<String>
(和Array<String?>
表示nullables),这相当于Java中的String[]
:另见:Arrays in the language reference
这些类型是存在的,因此您可以创建基元的数组,而不是盒装类型 . 由于String不是Java中的原语,因此您可以在Kotlin中使用
Array<String>
作为JavaString[]
的等价物 .使用arrayOf,arrayOfNulls,emptyArray
对于
Strings
和其他类型,您只需使用Array<*>
.IntArray
和其他存在的原因是为了防止自动装箱 .所以
int[]
与IntArray
有关,其中Integer[]
与Array<Int>
有关 .此示例在Android中完美运行
在kotlin中,您可以使用lambda表达式 . Kotlin Array构造函数定义是:
评估结果为:
要么:
在此示例中,字段定义为:
希望这可以帮助