가끔 면접 질문중에 const 와 final의 차이를 아는지 물어보는 경우가 있다.
그럴때마다 런타임,컴파일 타임
혹은 값이 정해져 있어서 메모리에 저장되서 빠르게 쓰거나...
데이터를 요청해서 받아온 결과를 사용...
이런식으로 대답하거나 이렇게 쓰는거지~ 라고 생각하면서 사용했다.
내 수준에서 좀 깊게 들어가자면 결국 const와final은
런타임(run time),컴파일타임(complie time)의 차이 인것 같다.
런타임은
프로그램이 실행 중 인 상태이다.
입력을 대기하며 입력에 따른 출력을 하려고 하는 상태
라고 생각한다.
컴파일 타임은
프로그램이 실행 중 이 되기 전의 상태
즉 런타임이라는 상태가 되기 직전의 상태
라고 생각한다.
런타임은 사용자가 소프트웨어를 사용하는 것이고
컴파일 타임은 개발자가 소프트웨어를 사용하는 것 이라고 누군가 스오플에 올려두었던데
딱 알맞는 용어인거 같다.
다시 const와 final로 돌아온다면
사용자가 사용하려는 상태에는 final이 들어가는 것이고
개발자가 사용하려는 상태에는 const가 들어가는 것이다!