2017-05-29 24 views
36

Tôi thấy rằng Kotlin có ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray, tương đương với byte[], short[], int[],char[], double[], float[] trong Java cho phù hợp.Tương đương Kotlin của chuỗi Java [] là gì?

Bây giờ tôi tự hỏi, có bất kỳ StringArray tương đương với String[] của Java không?

+3

'typealias stringArray = Array ';) – marstran

Trả lời

49

Không có trường hợp đặc biệt cho String, vì String là một kiểu tham chiếu thông thường trên JVM, trái ngược với Java primitives (int, double, ...) - lưu trữ chúng trong một tài liệu tham khảo Array<T> đòi hỏi boxing them into objects like Integer and Double. Mục đích của các mảng chuyên biệt như IntArray trong Kotlin là lưu trữ nguyên thủy không đóng hộp, loại bỏ quyền anh và chi phí unboxing (giống như Java int[] thay vì Integer[]).

Bạn có thể sử dụng Array<String> (và Array<String?> cho nullables), tương đương với String[] trong Java:

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

Xem thêm: Arrays in the language reference

1

Bạn có thể sử dụng chức năng arrayOf():

val literals = arrayOf("str1", "str2", "str3") 
+0

' arrayof' trả về 'Mảng ', là 'Mảng ' bằng với 'Chuỗi []' trong Java? – chancyWu

+0

Không, Trong kotlin Chuỗi không phải là kiểu nguyên thủy. Mảng của nó trong kotlin giống như Chuỗi [] trong Java – chandil03

+0

@chancyWu có. 'Array ' trong Kotlin tương đương với 'Whatever []' trong Java, và 'IntArray',' LongArray' và tương tự như 'int []', 'long []', ... –

6

Những loại đang có để bạn có thể tạo ra các mảng của nguyên thủy, và không phải là loại đóng hộp. Vì String không phải là nguyên thủy trong Java, bạn chỉ có thể sử dụng Array<String> trong Kotlin tương đương với một Java String[].

3

Đối với Strings và các loại khác, bạn chỉ cần sử dụng Array<*>. Lý do IntArray và những người khác tồn tại là để ngăn chặn tự động.

Vì vậy, int[] liên quan đến IntArray trong đó Integer[] liên quan đến Array<Int>.

Các vấn đề liên quan