이론/Java

상수와 static final

모달조아 2022. 11. 22. 22:08

상수는 어떤 것일까?

  1. 사용하는 모두에게 같은 값이어야함.
  2. 값이 변하지 않아야 함.

왜 상수를 선언할 때 static final 키워드를 붙일까?

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

결론

  • static final을 함께 사용하여 모두에게 동일하고 변하지 않는 값을 만들자