-
[Kotlin] 배열 사용법 정리Kotlin 2020. 2. 20. 12:30
Java의 배열 선언
int[] i_array; int mArray[];
자바에서는 두가지 방법으로 배열을 선언할 수 있는데요.
타입[ ] 변수;
타입 변수[ ];
대괄호 [ ]는 배열 변수를 선언하는 기호로 사용되는데 타입 뒤에 붙을 수도 있고 변수 뒤에 붙을 수도 있습니다.
배열을 선언하면서 바로 초기화를 할 수도 있고, 선언만 하고 나중에 초기화를 할 수도 있습니다.
int[] i_array = {1,2,3,4,5}; Arrays.fill(i_array,1); for(int i=0; i<i_array.length; i++) { i_array[i] = i; }
초기화를 할 때는 세가지 정도의 방법이 있는데요.
- 배열에 특정값을 대입하며 선언하는 방법
- 배열의 주소를 모두 같은 값으로 초기화하는 방법
- for문을 통해 값을 대입하는 방법
이렇게 3가지가 있습니다.
Kotlin의 배열 선언
kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/
코틀린 공식 문서에 의하면, 배열은 'arrayOf' , 'arrayOfNulls, 'emptyArray'로 배열 객체가 생성될 수 있다고 합니다.
// 빈 배열 객체를 생성합니다. val intArray1 = emptyArray<Int>() // 인자 값으로 넣은 element들을 가지는 배열 객체를 생성합니다. val intArray2 = arrayOf(1, 2, 3) // size 만큼의 크기를 가진 배열 객체를 생성하고 모든 element를 // null로 초기화합니다. val intArray3 = arrayOfNulls<Int>(5) // 생성자를 이용해서 초기화합니다. val intArray4 = Array<Int>(3) {i -> i+1}
배열을 생성하는 방법은 다양합니다. 내부적으로 타입 캐스팅을 해주기 때문에, arrayOf()를 사용하면 element에 맞는 타입을 가진 Array가 생성이 됩니다. 또, Array<T>() 생성자를 활용해서 Array 객체를 생성해주고 내부 값을 초기화 해주는 방법도 있습니다.
Kotlin의 배열 전문 클래스
코틀린에서 사용할 수 있는 배열 클래스 중 앞서 언급한 Array<T>외에 IntArray, LongArray 등의 타입이 앞에 명시된 Array 클래스가 있습니다. 이 둘은 어떤 차이가 있을까요?
자바에서는 기본적으로 Boxing 타입과 Primitive 타입이 있습니다. (Int와 int)
코틀린은 내부적으로 ArrayList와 같은 형태를 사용할 때 autoBoxing이 되는 것처럼 Primitive와 Boxing 타입을 잘 구분하지 않죠. 프로그래머가 직접 이 부분을 사용할 일은 자바보단 적다는 의미입니다.
이 Boxing과 Primitive가 IntArray와 Array<T>에 관련이 있습니다.
IntArray는 내부적으로 자바의 int[]와 같습니다. 또, Array<Int>는 자바의 Int[]와 같습니다. 그래서 Boxing 타입을 사용할 것인지, 혹은 Primitive 타입을 사용할 것인지에 따라 두 클래스를 구분하면 되겠죠.
var arr1 = Array<Int>(5, {0})
var arr = IntArray(5,{0}) // 5만큼의 크기 할당하고 엘리먼트를 0으로 초기화 arr[0] = 1 arr[1] = 2 for(i in arr){ print("$i") } }
'Kotlin' 카테고리의 다른 글
Kotlin의 고차 함수 (0) 2021.05.23 Kotlin의 Null 처리 (0) 2021.05.17 코틀린 수신 객체 지정 람다 : with와 apply (0) 2020.08.07 [코틀린을 다루는 기술] Kotlin에서의 재귀 함수 사용 (0) 2020.08.07 [코틀린을 다루는 기술] 코틀린 함수 정리 (0) 2020.07.31