val
- 불변 변수
- 실행 시간에 초기화됨
- 런타임에 값을 할당 받음
- Java의 final 특성과 유사
const val
- 컴파일 시간에 초기화됨
- 최상위 레벨 속성(top level property)이거나 object나 companion object의 멤버여야 한다.
- String이나 원시(primitive) 타입으로 초기화되어야 한다.
- 커스텀 getter를 사용할 수 없다.
const val는 왜 primitive type과 string만 초기화가 가능할까?
컴파일 시점에 초기화되기 때문이다. Reference Type의 경우 런타임 시점에 Heap 영역에서 객체가 생성된다. 그렇기 때문에 Reference Type의 경우 컴파일 시점에 초기화가 불가능하기 때문에 Primitive Type String만 가능하다.
참고자료
https://velog.io/@m0ngj1/Kotlin-var%EA%B3%BC-val-%EC%83%81%EC%88%98%ED%99%94-const-val%EA%B3%BC-val
[Kotlin] var과 val, 상수화, const val과 val 에 대해 알아보자
봘 ? 붤 ? 그게 뭔데? 상수화 ? 가 뭔데 ?
velog.io
https://medium.com/@ans188/kotlin-var-val-const-val-%EC%B0%A8%EC%9D%B4-8826cf0cdccf
[Kotlin] var, val, const val 차이
Kotlin in Action 다시 공부 & 익숙하지만 몰랐던 것들
medium.com
'Kotlin' 카테고리의 다른 글
[Kotlin] open class와 abstract class (feat. 코틀린에서의 final) (0) | 2024.11.02 |
---|---|
[Kotlin] 깊은 복사 (Deep Copy) 3가지 방법 (0) | 2024.11.02 |
[Kotlin] Object 키워드 (with companion object) (0) | 2024.11.02 |
[Kotlin] Data Class란? (4) | 2024.11.02 |
[Kotlin] Sealed Class란? (2) | 2024.11.02 |