ฉันเห็นว่า Kotlin มีByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray
ซึ่งเทียบเท่ากับbyte[], short[], int[],char[], double[], float[]
ใน Java
ตอนนี้ฉันสงสัยว่ามีอะไรStringArray
เทียบเท่ากับ Java String[]
หรือไม่
ฉันเห็นว่า Kotlin มีByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray
ซึ่งเทียบเท่ากับbyte[], short[], int[],char[], double[], float[]
ใน Java
ตอนนี้ฉันสงสัยว่ามีอะไรStringArray
เทียบเท่ากับ Java String[]
หรือไม่
คำตอบ:
ไม่มีกรณีพิเศษสำหรับเป็นString
เพราะString
เป็นประเภทสามัญอ้างอิง JVM ในทางตรงกันข้ามกับพื้นฐาน Java ( int
, double
, ... ) - เก็บไว้ในการอ้างอิงArray<T>
ต้องมวยพวกเขาเป็นวัตถุเช่นInteger
Double
และ วัตถุประสงค์ของอาร์เรย์พิเศษเช่น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")
ดูเพิ่มเติม: อาร์เรย์ในการอ้างอิงภาษา
ใช้ 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()
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, { _ -> "" })
มีชนิดเหล่านั้นอยู่ที่นั่นเพื่อให้คุณสามารถสร้างอาร์เรย์ของดั้งเดิมได้และไม่ใช่ชนิดที่บรรจุอยู่ เนื่องจาก String ไม่ใช่ดั้งเดิมใน Java คุณสามารถใช้Array<String>
ใน Kotlin แทน Java String[]
ได้
สำหรับStrings
และประเภทอื่น ๆ Array<*>
ที่คุณเพียงแค่ใช้ เหตุผลIntArray
และอื่น ๆ ที่มีอยู่คือการป้องกันการ autobox
ดังนั้นint[]
ที่เกี่ยวข้องกับการIntArray
ที่เกี่ยวข้องกับInteger[]
Array<Int>
วิธีการทั่วไปบางอย่างในการสร้างอาร์เรย์สตริงคือ
สิ่งนี้จะสร้างอาร์เรย์ของ 5 สตริงโดยมีค่าเริ่มต้นเป็นสตริงว่าง
<String?>
(5)สิ่งนี้จะสร้างอาร์เรย์ขนาด 5 ที่มีค่าเริ่มต้นเป็นโมฆะ คุณสามารถใช้ข้อมูล String เพื่อแก้ไขอาเรย์
เมื่อคุณรู้เนื้อหาของอาเรย์แล้วคุณสามารถเริ่มต้นอาร์เรย์ได้โดยตรง
มีวิธีที่ง่ายในการสร้างสตริงหลายมิติเช่นกัน
var matrix = Array (5) {Array (6) {""}}
นี่คือวิธีที่คุณสามารถสร้างเมทริกซ์ที่มี 5 แถวและ 6 คอลัมน์ด้วยค่าเริ่มต้นของสตริงที่ว่างเปล่า
ตัวอย่างนี้ทำงานได้อย่างสมบูรณ์ใน 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
หวังว่านี่จะช่วยได้
คุณสามารถใช้:
val frases = arrayOf("texto01","texto02 ","anotherText","and ")
ตัวอย่างเช่น.
typealias StringArray = Array<String>
;)