[kotlin] Kotlin과 Java의 String []은 무엇입니까?

Kotlin에는 Java ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray와 동등한가 byte[], short[], int[],char[], double[], float[]있습니다.

이제 궁금 StringArray합니다 .Java와 동등한 것이 String[]있습니까?



답변

에 대한 특별한 경우가 없습니다 String때문에, String과는 대조적으로, JVM에 일반 참조 타입 자바 프리미티브 ( int, double, …) – 참조에 저장하는 것이 Array<T>필요 같은 객체로 권투 IntegerDouble . IntArrayKotlin 과 같은 특수 배열의 목적은 비 복제 프리미티브를 저장하여 복싱 및 언 박싱 오버 헤드를 제거하는 것입니다 ( int[]대신 Java와 동일 Integer[]).

Java 와 동등한 Array<String>(및 Array<String?>nullables)을 사용할 수 있습니다 String[].

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 StringsKotlin 에서 공란을 만들려면 다음 6 가지 방법 중 하나를 사용해야합니다.

첫 번째 접근법 :

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와 다른 것들도 오토 박싱을 막기 위해서입니다.

그래서 int[]관련 IntArray곳에 Integer[]관련 Array<Int>.


답변

문자열 배열을 만드는 일반적인 방법 중 일부는 다음과 같습니다.

  1. var arr = Array (5) { “”}

이렇게하면 초기 값이 비어있는 5 개의 문자열 배열이 만들어집니다.

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

초기 값이 null 인 크기 5의 배열을 만듭니다. 문자열 데이터를 사용하여 배열을 수정할 수 있습니다.

  1. var arr = arrayOf ( “zero”, “one”, “two”, “three”)

배열의 내용을 이미 알고 있으면 배열을 직접 초기화 할 수 있습니다.

  1. 문자열의 다차원 배열 을 만드는 쉬운 방법이 있습니다.

    var matrix = Array (5) {Array (6) { “”}}

    빈 문자열의 초기 값으로 5 행 6 열의 행렬을 만드는 방법입니다.


답변

이 예제는 Android에서 완벽하게 작동합니다.

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

도움이 되었기를 바랍니다