Array<Int>
이다 Integer[]
하면서 후드 IntArray
이다 int[]
. 그게 다야.
당신이를 넣을 때이 수단 Int
에 Array<Int>
, 항상 (AN으로, 특히 박스됩니다 Integer.valueOf()
호출). 의 경우 IntArray
Java 기본 배열로 변환되므로 boxing이 발생하지 않습니다.
위의 가능한 성능 영향 외에도 고려할 편의성도 있습니다. 기본 배열은 초기화되지 않은 상태로 둘 수 있으며 0
모든 인덱스에 기본값이 있습니다 . 이것이 바로 IntArray
나머지 기본 배열에 크기 매개 변수 만 취하는 생성자 가있는 이유입니다 .
val arr = IntArray(10)
println(arr.joinToString())
반대로, Array<T>
크기 매개 변수 만 취하는 생성자는 없습니다 T
. 생성 후 유효한 상태가 되려면 모든 인덱스에서 null이 아닌 유효한 인스턴스가 필요합니다 . 위해 Number
유형이 기본이 될 수 0
있지만, 임의의 유형의 기본 인스턴스를 생성 할 수있는 방법이 없습니다 T
.
따라서를 만들 때 Array<Int>
초기화 함수를 사용하는 생성자를 사용할 수도 있습니다.
val arr = Array<Int>(10) { index -> 0 }
val arr = Array(10) { 0 }
또는 Array<Int?>
모든 값을 초기화 할 필요가 없도록를 만들지 만 나중에 null
배열에서 읽을 때마다 가능한 값 을 처리해야합니다 .
val arr = arrayOfNulls<Int>(10)
Array<Int>
에 컴파일Integer[]
(컴파일러가이 최적화되어 있지 않은 경우)