배열의 선언과 초기화를 동시에
arrayOf를 사용하여 배열의 선언과 초기화를 동시에 할 수 있다.
val arr = arrayOf<Int>(1,2,3,4,5)
val arr2 = arrayOf<String>("Hello", "world)
코틀린의 배열은 다른 언어와 마찬가지로 인덱스는 0부터 시작하고 인덱스를 사용하여 접근할 수 있다.
타입의 경우 적지 않고 arrayOf(1,2,3,4) 이렇게 사용해도 무관하지만 뜻의 모호함을 피하기 위해서 적어두는 것이 좋다.
ex) print(arr[1]) 결과 : 2
비어있는 배열도 만들 수 있다.
val a = emptyArray<String>()
람다 함수를 사용하여 배열 초기화
예를 들어서 길이가 10이고 2 부터 20까지 2의 배수로 이루어진 배열을 만들고 싶다고 하자.
다음과 같이 람다 함수를 사용하면 한 줄로 표현할 수 있다.
val squares = Array(10){(it + 1)*2}
it는 iterator(반복자)의 약자로 쉽게 생각하면 그냥 배열의 모든 인덱스를 반복으로 가져온다고 보면 된다.
길이가 10인 배열이므로 it는 0부터 9까지 차례대로 들어가게 된다.
배열의 복사
arr라는 배열을 arr2로 복사하고 싶을 때 다음과 같이 하면 문제가 발생할 수 있다.
val arr2 = arr
원본 배열인 arr의 값들이 복사가 되는 것이 아니라 arr2는 arr 배열의 원본 주소를 가리키게 된다.
즉 arr2와 arr는 같은 주소를 가리키고 있고 arr2의 값을 바꾸면 arr의 값 또한 바뀌게 된다.
그래서 배열을 복사하려면 copyOf라는 함수를 사용한다.
val arr2 = arr.copyOf()
배열의 내용을 비교할 때도 조심해야 한다.
다음과 같이 "==" 과 "!="을 사용해서 배열을 비교하면 객체가 동일한지 확인하는 것이다.
위에서 val arr2=arr를 사용한다면 arr2와 arr는 동일 객체를 가리키고 있으므로 같은 객체로 판단한다.
같은 값을 지니고 있는지 확인하기 위해서는 contentEquals라는 메소드를 사용해야한다.
arr2.contentEquals(arr))
'컴퓨터 언어 > Kotlin' 카테고리의 다른 글
[Kotlin] 범위 표현의 방법과 in과 when과의 활용 (0) | 2022.11.19 |
---|---|
[Kotlin] 조건문 사용법 및 한 줄 조건문 (0) | 2022.11.18 |
[Kotlin] 코틀린 함수 주의사항 및 오버로딩 (0) | 2022.11.17 |
[Kotlin] 문자열의 표현과 출력, raw string (0) | 2022.11.15 |
[Kotlin] 변수의 선언, 타입 추론 (0) | 2022.11.14 |
댓글