본문 바로가기

컴퓨터 언어/Kotlin

코틀린 - const val vs val

주의

아래 내용들은 오류나 잘못된 내용들을 포함할 수 있으므로 주의해주시기 바랍니다.

만약, 잘못 된 부분이 있으면 댓글로 말씀해주시면 감사하겠습니다.


읽기만 가능한, 수정이 불가능한 변수를 선언할 때는 val 키워드를 사용한다.

그런데 일반적으로 const 또한 수정이 불가능한 변수를 선언할 때 사용하지 않나?

이 둘의 차이점은 무엇일까?

 

바로 초기화 시기에 차이점이 있다.

const val의 경우 컴파일 타임에 초기화가 되고, val의 경우 런타임 시기에 초기화가 된다.

이는 const val이 참조형을 사용하지 못하는 이유와도 연관이 있다.

 

참조형은 프로그램이 돌아갈 때, 프로그램에 의해서 힙 메모리에 객체가 올라가고 스택 메모리에 선언된 변수가 해당 객체를 참조한다.

const val은 컴파일 시기에 초기화가 되므로 프로그램이 실행되기 이전에 값을 초기화하므로 참조형을 사용할 수 없는 것이다.

728x90
반응형

'컴퓨터 언어 > Kotlin' 카테고리의 다른 글

07. 코루틴의 Async and Await  (0) 2022.07.06
06. 코루틴의 Job, waiting, Cancelation  (0) 2022.07.05
05. 코루틴의 runBlocking  (0) 2022.07.05
04. 코루틴의 Context  (0) 2022.07.05
03. 코루틴 suspend 함수  (0) 2022.07.05