Java 에서처럼 배열을 어떻게 만들 수 있습니까?
int A[] = new int[N];
Kotlin에서 어떻게 할 수 있습니까?
답변:
참조 에 따르면 배열은 다음과 같은 방식으로 생성됩니다.
자바의 기본 유형의 구별 유형이있다 IntArray
, DoubleArray
저장 등 언 박싱 값.
해당 생성자와 팩토리 함수로 생성됩니다.
val arrayOfZeros = IntArray(size) //equivalent in Java: new int[size]
val numbersFromOne = IntArray(size) { it + 1 }
val myInts = intArrayOf(1, 1, 2, 3, 5, 8, 13, 21)
첫 번째는 Java와 유사하며 기본값으로 채워진 기본 배열을 생성합니다 (예 : 0 for Int
, false
for) Boolean
.
기본이 아닌 배열은 항목 유형이있는 Array<T>
클래스 로 표시됩니다 T
.
T
여전히 자바에서 기본 유형 중 하나가 될 수 있습니다 ( Int
, Boolean
, ...)하지만, 값은 내부 자바에 동등 박스 될 것이다 Integer
, Double
등등.
또한, T
모두가 될 수 널 (NULL) 및 비 - 널 좋아 String
하고 String?
.
유사한 방식으로 생성됩니다.
val nulls = arrayOfNulls<String>(size) //equivalent in Java: new String[size]
val strings = Array(size) { "n = $it" }
val myStrings = arrayOf("foo", "bar", "baz")
val boxedInts = arrayOfNulls<Int>(size) //equivalent in Java: new Integer[size]
val boxedZeros = Array(size) { 0 }
Array<Int>(size)
컴파일되지 않습니다. 요소를 제공하지 않고는 nullable이 아닌 배열을 만들 수 없기 때문입니다.
Kotlin에서 크기 N의 IntArray를 만드는 것은 간단합니다. IntArray(n)
핫키의 답변에 자세히 설명 된대로 또는 적절한 유형을 사용하십시오 .
고정 크기 배열을 사용할 때 Kotlin Destructuring을 사용할 수 있습니다.
// Create fixed sized array
val point = IntArray(2)
// Access values directly
val (x, y) = point
이 경우 x
인덱스 0, y
인덱스 1 등에서 가져옵니다 .
int
있지만, Objects의 경우 stackoverflow.com/questions/32679060/…이 있습니다.