이론/Java
상수와 static final
모달조아
2022. 11. 22. 22:08
상수는 어떤 것일까?
- 사용하는 모두에게 같은 값이어야함.
- 값이 변하지 않아야 함.
왜 상수를 선언할 때 static final 키워드를 붙일까?
- static의 의미
static이 아닌 데이터들은 런타임 시점에 동적으로 메모리에 할당되는데
static 키워드가 붙은 데이터는 컴파일시점에 가비지컬렉터의 관리 밖인 static영역에 할당되므로 실행 직후부터 끝날때까지 쭉 유지됨 - final의 의미
초기화를 한번만 허용한다는 의미. 즉, 한번 초기화되면 더 이상 초기화할 수 없다. - 의문이 생겼던 부분
그럼 final만 붙어도 상수아닌가? 왜 static까지 붙여줘야 하지?
final 만 있으면 모두에게 같은 값이라는 것을 보장할 수 없다!
A와 B라는 사용자가 C변수에 final 키워드를 줬다고 해보자. 초기화 후 사용자 각각에게는 C는 변하지 않는 값이겠지만, 각자 다른 값으로 초기화를 했다면?
우리가 생각하는 상수의 의미를 만족시키지 못한다.
결론
- static final을 함께 사용하여 모두에게 동일하고 변하지 않는 값을 만들자