관리 메뉴

Bbaktaeho

Kotlin(코틀린) 5. 배열 본문

프로그래밍 (Programming)/코틀린 (Kotlin)

Kotlin(코틀린) 5. 배열

Bbaktaeho 2019. 1. 24. 10:35
반응형

배열)

코틀린에는 배열이 Array 클래스로 정의되어 있다. 그리고 Array<String>처럼 배열에 저장되는 요소의 타입을 제네릭 타입으로 나타낸다.

대괄호는 배열을 선언할 때 사용하지 않고 배열의 각 요소를 읽거나 쓸 때만 사용한다.(자바와 다른 점)

첫 번째로 arrayOf() 함수를 사용하여 생성해보자 괄호 안에는 순서대로 요소가 들어간다.

1
2
3
4
val arr = arrayOf(1,2,3)
//arr[0]는 1
//arr[1]는 2
//arr[2]는 3
cs

arrayOf() 함수는 초기화를 해주지 않으면 안 된다. 만약 배열 요소가 null 값을 가질 수 있거나 또는 요소의 타입이 null 값을 허용하는 경우에는 arrayOfNulls<>() 함수를 사용해야 된다.

1
2
val arr1 = arrayOf(1,2,3)
val arr2 = arrayOfNulls<Int>(5)
cs

두 번째로 Array 클래스의 생성자를 사용하는 방법이다.

1
val arr3 = Array<String>(5, { i -> i.toString() })
cs

생성자의 첫 번째 인자로는 size 이고 두 번째 인자로는 요소를 초기화하는 함수를 전달해야 한다. 지금은 람다식을 사용하여 간결하게 표현했다. (i 는 0부터 시작하며 1씩 5번 증가한다)

순서대로 "0", "1", "2", "3", "4" 로 초기화된다. 또 배열의 요소 타입을 나타내는 제네릭 타입은 생략해도 좋다.

1
val arr4 = Array(6, { i -> i.toString() })
cs

참고로 배열의 모든 원소를 출력하고 싶을 때 반복문을 이용하는데 코틀린에서 forEach() 함수를 사용해보자

1
2
3
4
fun main(args: Array<String>) {
    val arr3 = Array<String>(5) { i -> i.toString() }
    arr3.forEach { print(it) }
}
cs

순서대로 01234 가 출력될 것이다.

여기서 forEach의 it은 키워드이며 배열의 각 요소를 가르킨다.

여기서 forEach의 it은 키워드이며 배열의 각 요소를 가르킨다.

사실 코트린에서는 기본 타입의 요소를 저장하는 배열을 별도의 클래스로 갖고 있다.

ByteArray, ShortArray, IntArray, LongArray, FloatArray, DoubleArray, CharArray, BooleanArray 이다.

이 배열 클래스들은 코틀린 컴파일러가 JVM의 기본 타입 배열로 변환해준다. (CharArray는 Char[]로 변환)

하지만 다차원 배열에는 사용할 수 없음에 주의하자.

참고로

코틀린에서 Array<>() 을 사용하여 배열을 만들면 컴파일러는 제네릭 타입을 기준으로 컴파일하기 때문에 불필요하게 객체를 생성하게 되어 메모리 낭비와 성능 저하가 발생할 수 있다.


반응형