Primary/Kotlin
[Kotlin] const, val, var
해스끼
2022. 4. 14. 14:53
Kotlin에서 ``const``는 컴파일 시간에 결정된다는 의미를 갖고 있다. 프로그램이 실행되는 런타임 이전에 이미 결정되어 변하지 않는다는 것이다.
그래서 ``const val``은 컴파일 시간에 결정되는 상수를 의미한다. 그냥 ``val``은 런타임에서 결정될 수도 있지만, ``const val``은 컴파일 시간에 결정되므로 런타임에서 재할당할 수는 없다.
``const``의 의미를 생각해 보면 ``const var``이 모순인 이유를 쉽게 알 수 있다. ``var``은 언제든 재할당될 수 있으므로, ``const``와 정반대의 의미를 갖고 있기 때문이다.
따라서 ``const val``은 컴파일 시간에 결정될 수 있는 문자열과 기본 자료형(정수, 실수 등)에만 사용할 수 있다. 일반 클래스 인스턴스는 런타임에 생성자에 의해 만들어지므로 컴파일 시간에 결정될 수 없으며, 따라서 ``const`` 역시 사용할 수 없다.
일반적으로 ``const val``은 클래스의 ``companion object`` 또는 파일 최상위 레벨에서 상수를 선언할 때 사용된다.