brunch

You can make anything
by writing

C.S.Lewis

by 서준수 Mar 12. 2019

코틀린(Kotlin) 배열(Array) #2

빠르게 살펴보기

코틀린의 배열을 처음 접한 형태는 다음과 같았습니다. 이러한 형태는 고정된 값이 있고 고정된 크기로 생성된 경우입니다.


fun main(args: Array <String>) {
    var arr = arrayOf(1, 2, 3)
    for (i in arr) {
        print("$i ")
    }
}


1 2 3 



물론 값은 바꿀 수 있습니다.


fun main(args: Array<String>) {
    var arr = arrayOf(1, 2, 3)
    arr.set(1, 4)
    arr[2] = 5
    for (i in arr) {
        print("$i ")
    }
}


1 4 5 



그런데 보통 이렇게 엘리먼트를 일일이 직접 채워서 배열의 크기를 정하지 않습니다. 자바를 생각해봐도 배열의 크기를 직접 지정해줍니다. 코틀린도 당연히 가능합니다.


  fun main(args: Array<String>) {
    var arr1 =  Array(5, })
    arr1[0] = 1
    arr1[1] = 2
    for (i in arr1) {
        print("$i ")
    }
}


1 2 0 0 0



크기가 5이고 엘리먼트가 0으로 초기화된 배열이 만들어졌습니다. 물론 이 배열 역시 값을 재할당 할 수 있습니다. 단, 위와 같이 사용 시 생략된 제네릭 타입은 <Int>입니다.


var arr1 =  Array<Int>(5, { 0 })



이러한 형태이기 때문에 배열의 각 엘리먼트에 저장되는 값은 정수 0이 아닙니다. Int의 참조를 따라가 보면 다음과 같이 클래스 형태입니다.


public class Int private constructor() : Number(), Comparable<Int>



따라서 배열의 각 엘리먼트는 해당 기본 유형(primitive type) 즉, Integer의 인스턴스를 저장합니다. 이 경우 배열의 크기가 크면 메모리도 많이 소모됩니다. 그래서 코틀린은 기본 유형을 저장하기 위한 전문 클래스를 가지고 있다고 했습니다. (배열 1편 참조)


int의 경우 IntArray이며 이 또한 Array와 같은 형태로 배열의 크기 지정 및 엘리먼트를 초기화할 수 있습니다.


fun main(args: Array<String>) {
    var arr = IntArray(5, })
    arr[0] = 1
    arr[1] = 2

    for (i in arr) {
        print("$i ")
    }
}


1 2 0 0 0 



이런 식으로 자바에서 사용하던 배열의 방식을 그대로 코틀린으로 사용할 수 있습니다.

이전 20화 코틀린(Kotlin) 배열(Array) #1
brunch book
$magazine.title

현재 글은 이 브런치북에
소속되어 있습니다.

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari