경험의 기록

val arr1 = arrayListOf(1)
    val arr2 = arr1 // 배열 참조
    arr2.add(2)

코틀린에서 배열을 복사하여 다른 배열을 생성하고자 할때, 위와 같이

새로운 배열 = 복사할 배열

형태로 선언하게 되면 C언어의 포인터처럼 주소값을 참조하게 되어

새로운 배열의 변경사항이 복사한 배열에도 적용된다.

 

val arr3 = arrayListOf(1)
    val arr4 = arrayListOf<Int>()
    arr4.addAll(arr3) // 배열 복사
    arr4.add(2)

 

따라서 addAll을 사용하면

기존의 배열을 복사할 수 있다.

 

fun main() = with(Scanner(System.`in`)){
    val arr1 = arrayListOf(1)
    val arr2 = arr1 // 배열 참조
    arr2.add(2)

    println("arr1 : $arr1 , arr2 : $arr2")

    val arr3 = arrayListOf(1)
    val arr4 = arrayListOf<Int>()
    arr4.addAll(arr3) // 배열 복사
    arr4.add(2)

    println("arr3 : $arr3 , arr4 : $arr4")
}

arr1을 참조한 arr2에 2를 추가하면 arr1, arr2 둘다 추가 된것을 확인할 수 있고

단지 복사하여 사용하고 싶다면 addAll을 사용해야한다.

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading