Kotlin เทียบเท่ากับสตริงของ Java [] คืออะไร


165

ฉันเห็นว่า Kotlin มีByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArrayซึ่งเทียบเท่ากับbyte[], short[], int[],char[], double[], float[]ใน Java

ตอนนี้ฉันสงสัยว่ามีอะไรStringArrayเทียบเท่ากับ Java String[]หรือไม่


7
typealias StringArray = Array<String>;)
marstran

คำตอบ:


226

ไม่มีกรณีพิเศษสำหรับเป็นStringเพราะStringเป็นประเภทสามัญอ้างอิง JVM ในทางตรงกันข้ามกับพื้นฐาน Java ( int, double, ... ) - เก็บไว้ในการอ้างอิงArray<T>ต้องมวยพวกเขาเป็นวัตถุเช่นIntegerDoubleและ วัตถุประสงค์ของอาร์เรย์พิเศษเช่นIntArrayใน Kotlin คือการจัดเก็บแบบดั้งเดิมที่ไม่มีกล่องการกำจัดของมวยและค่าใช้จ่าย unboxing (เช่นเดียวกับ Java int[]แทนInteger[])

คุณสามารถใช้Array<String>(และArray<String?>สำหรับ nullables) ซึ่งเทียบเท่ากับString[]ใน Java:

val stringsOrNulls = arrayOfNulls<String>(10) // returns Array<String?>
val someStrings = Array<String>(5) { "it = $it" }
val otherStrings = arrayOf("a", "b", "c")

ดูเพิ่มเติม: อาร์เรย์ในการอ้างอิงภาษา


18

ใช้ 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()

16

ในการสร้างช่องว่างArray of Stringsใน 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, { _ -> "" })

9

มีชนิดเหล่านั้นอยู่ที่นั่นเพื่อให้คุณสามารถสร้างอาร์เรย์ของดั้งเดิมได้และไม่ใช่ชนิดที่บรรจุอยู่ เนื่องจาก String ไม่ใช่ดั้งเดิมใน Java คุณสามารถใช้Array<String>ใน Kotlin แทน Java String[]ได้


5

สำหรับStringsและประเภทอื่น ๆ Array<*>ที่คุณเพียงแค่ใช้ เหตุผลIntArrayและอื่น ๆ ที่มีอยู่คือการป้องกันการ autobox

ดังนั้นint[]ที่เกี่ยวข้องกับการIntArrayที่เกี่ยวข้องกับInteger[]Array<Int>


1

วิธีการทั่วไปบางอย่างในการสร้างอาร์เรย์สตริงคือ

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

สิ่งนี้จะสร้างอาร์เรย์ของ 5 สตริงโดยมีค่าเริ่มต้นเป็นสตริงว่าง

  1. var arr = arrayOfNulls <String?>(5)

สิ่งนี้จะสร้างอาร์เรย์ขนาด 5 ที่มีค่าเริ่มต้นเป็นโมฆะ คุณสามารถใช้ข้อมูล String เพื่อแก้ไขอาเรย์

  1. var arr = arrayOf ("ศูนย์", "หนึ่ง", "สอง", "สาม")

เมื่อคุณรู้เนื้อหาของอาเรย์แล้วคุณสามารถเริ่มต้นอาร์เรย์ได้โดยตรง

  1. มีวิธีที่ง่ายในการสร้างสตริงหลายมิติเช่นกัน

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

    นี่คือวิธีที่คุณสามารถสร้างเมทริกซ์ที่มี 5 แถวและ 6 คอลัมน์ด้วยค่าเริ่มต้นของสตริงที่ว่างเปล่า


0

ตัวอย่างนี้ทำงานได้อย่างสมบูรณ์ใน Android

ใน kotlin คุณสามารถใช้แลมบ์ดานิพจน์ได้ นิยามตัวสร้าง Kotlin Array Constructor คือ:

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

หวังว่านี่จะช่วยได้


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.