mutable과 var의 차이점
201
5 asked
컬렉션 부분을 배우면서 한가지 이상한 점이 생겨서 질문드립니다.
강의 초반 var / val의 차이점을 알려주시면서 읽기, 쓰기 가능 혹은 읽기만 가능 이라고 알려주셨는데 val로 List을 만들면 당연히 각각의 변수의 값을 바꿀 수 없는 거 아닌가 싶어서요
또, val로 만든 List가 mutable을 붙이면 값이 변화할수 있다는게 조금 이해가 되지 않습니다
추정을 조금 해보자면 List을 만들면 List자체가 하나의 변수가 되어 val { } 안에 들어있는 값을 읽어오고 그 값을 List에 새롭게 저장하는 방식인가요? 만약에 그런 방식이 아니라면 이해가 되지 않는 부분입니다
반대로 생각하면 var로 선언한 변수들로 immutableList를 만들었을때 값이 변화가 안되는건가요?
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다.
var와 val의 차이는 변수의 재할당 가능 여부와 관련이 있습니다. var는 변수에 새로운 값을 재할당할 수 있지만, val는 초기에 할당된 값을 변경할 수 없습니다(읽기 전용).
컬렉션의 경우, val로 선언된 컬렉션은 컬렉션 자체를 재할당할 수 없습니다. 하지만 이것은 컬렉션이 가지고 있는 요소의 값을 변경할 수 없다는 의미는 아닙니다. 여기서 mutable과 immutable 컬렉션의 차이점이 중요합니다.
- Immutable 컬렉션(e.g.,
listOf(),mapOf())은 생성 후에 그 내용을 변경할 수 없습니다. 즉, 요소를 추가하거나 제거할 수 없습니다.
- Mutable 컬렉션(e.g.,
mutableListOf(),mutableMapOf())은 생성 후에도 요소를 추가하거나 삭제할 수 있습니다.
val로 선언된 List가 mutable일 경우, List를 재할당할 수는 없지만, List 내부의 요소를 수정할 수 있습니다(예: 요소 추가, 삭제). 반면에, immutable List를 사용하면 처음 생성할 때 지정한 요소를 변경할 수 없습니다.
var로 선언된 변수에 immutable 컬렉션을 할당하면, 변수에 다른 컬렉션을 재할당할 수는 있지만, 할당된 immutable 컬렉션의 요소를 변경할 수는 없습니다. 이 경우 변수를 다른 컬렉션으로 변경할 수 있어도, 할당된 컬렉션 자체의 변경은 불가능합니다.
즉, var/val은 변수의 재할당 가능성과 관련이 있고, mutable/immutable은 해당 컬렉션이 요소의 변경을 허용하는지에 대한 특성입니다.
안드로이드스튜디오 버전이 어떻게 되는지요?
0
106
1
스크래치 파일 Run 안되는 오류 발생
0
134
1
Git에서 다운받은 폴더가 안열리는 분들
0
136
1
TodoDao Interface 문의
0
78
1
kotlin 버전과 ksp 버전 꼭 맞추셔야 해요!!
0
450
1
아름다운 joyce님께.. runonuithread 문의
0
139
0
viewBinding 관련 질문입니다.
0
206
3
0:30초 질문입니다.
0
179
1
Locationmanager로 타입캐스팅 실패 문의
0
140
1
Todo리스트 dao 구성 시 todo 질문
0
140
1
룸 데이터베이스 구성 시 dao 에러 문의
0
171
1
버튼모양 질문 소스코드 첨부
0
146
1
레이아웃 구성할떄 저는 버튼모양이 원으로 나와요
0
169
1
싱글톤 패턴 구현중 코드가 강의와 일치하지 않습니다.
0
156
1
MainActivity 파일안에 setContencView가 없습니다..
0
202
1
room database 설치 질문
0
174
1
kts로 공부하는 학생도 있는데 갑자기 설명도 없이 kt로 설명하면..
0
314
3
안드로이드 스튜디오 스크래치 파일
0
277
1
추가링크는 어디에 있을까요?
0
285
1
대시보드 설정 마지막 단계 Google Play에 앱 게시
0
678
2
geoCoder.getFromLocation 에러
0
554
2
apirequest.io 로딩 현상 & 사이트 이상함
0
451
1
PrimaryKey를 Nullable하게 만드는 이유
0
268
1
개인정보처리방침에 대한 질문
0
233
1

