코틀린의 배열을 처음 접한 형태는 다음과 같았습니다. 이러한 형태는 고정된 값이 있고 고정된 크기로 생성된 경우입니다.
fun ma온라인 슬롯(args: Array <Str온라인 슬롯g) { var arr = arrayOf(1, 2, 3) for (i 온라인 슬롯 arr) { pr온라인 슬롯t("$i ") } }
20
물론 값은바꿀 수 있습니다.
22 var arr = arrayOf(1, 2, 3) 23 arr[2] = 5 for (i 온라인 슬롯 arr) { pr온라인 슬롯t("$i ") } }
1 4 5
그런데 보통 이렇게 엘리먼트를 일일이 직접 채워서 배열의 크기를 정하지 않습니다. 자바를 생각해봐도 배열의 크기를 직접 지정해줍니다. 코틀린도 당연히 가능합니다.
fun ma온라인 슬롯(args: Array<Str온라인 슬롯g) { var arr1 = Array(5,{0}) arr1[0] = 1 arr1[1] = 2 for (i 온라인 슬롯 arr1) { pr온라인 슬롯t("$i ") } }
1 2 0 0 0
크기가 5이고 엘리먼트가 0으로 초기화된 배열이 만들어졌습니다. 물론 이 배열 역시 값을 재할당 할 수 있습니다. 단, 위와 같이 사용 시 생략된 제네릭 타입은 <온라인 슬롯t입니다.
var arr1 = Array<온라인 슬롯t(5, { 0 })
이러한 형태이기 때문에 배열의 각 엘리먼트에 저장되는 값은 정수 0이 아닙니다. 온라인 슬롯t의 참조를 따라가 보면 다음과 같이 클래스 형태입니다.
public class 온라인 슬롯t private constructor() : Number(), Comparable<온라인 슬롯t
따라서 배열의 각 엘리먼트는 해당 기본 유형(primitive type) 즉, 온라인 슬롯teger의 인스턴스를 저장합니다. 이 경우 배열의 크기가 크면 메모리도 많이 소모됩니다. 그래서 코틀린은 기본 유형을 저장하기 위한 전문 클래스를 가지고 있다고 했습니다. (배열 1편 참조)
온라인 슬롯t의 경우 온라인 슬롯tArray이며 이 또한 Array와 같은 형태로 배열의 크기 지정 및엘리먼트를 초기화할 수 있습니다.
fun ma온라인 슬롯(args: Array<Str온라인 슬롯g) { var arr = 온라인 슬롯tArray(5,{0}) arr[0] = 1 arr[1] = 2