EnjoyLife

(가변)mutableList 타입으로 초기화 할때 반드시 val 변수에 담자 본문

안드로이드 개발/개발팁

(가변)mutableList 타입으로 초기화 할때 반드시 val 변수에 담자

Aiden96 2024. 5. 28. 19:21

 

 

val numbers = listOf(1,2,3)   와 val numbers = mutableListOf(1,2,3) 에서 val 의 쓰임새가 완전히 다르다.

 

1) numbers  에 mutableListOf  객체생성을 하고 또 아래처럼  객체를 생성하거나 

 

numbers = mutableListOf(5,7,23,44) 

 

2) 다른 변수의 주소를 참조하게 하면  오류를 발생시킨다. 

 

val murisu = mutableListOf(1,2,3) 

numbers = murisu 

 

즉 자바개념으로 설명하면 new로 생성후 다시 new 생성만 하지 않으면 된다. 

그리고 참조주소를 변경하면 안된다.

 

아래처럼 같은주소안에 값을 수백번, 수천번 변경해도 상관없다.

아주 중요한 개념이다. 

number[0] = 4

number[1] = 24

number[2] = 58

 

fun main() {
    // val로 선언된 리스트 변수, 상자라고 생각해보자
    val numbers = mutableListOf(1, 2, 3)

    // 리스트 자체를 다른 리스트로 바꾸려면 안 돼
    // numbers = mutableListOf(4, 5, 6) // 이건 안 돼! 오류가 발생해

    // 리스트 안의 값은 바꿀 수 있어
    numbers[0] = 4
    numbers[1] = 5
    numbers[2] = 6

    // 리스트의 내용물을 출력해보자
    println(numbers) // [4, 5, 6]

    // 새로운 리스트를 만들어보자
    val newNumbers = mutableListOf(7, 8, 9)

    // 원래 리스트(numbers)를 새로운 리스트(newNumbers)로 바꾸려면 안 돼
    // numbers = newNumbers // 이건 안 돼! 오류가 발생해
}