본문 바로가기
Kotlin

[Kotlin] val vs Const val

by 태크민 2024. 11. 2.

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