final과 static을 같이 사용하는 이유는 무엇일까?

지정욱·2024년 1월 5일
0

필자는 여태까지 멤버변수에 있는 상수(Constant)를 그냥 상수라서 final과 static을 같이 사용했었는데, 프로그램을 작성하면서 왜 같이 사용하는지 의문점이 들었다.
그래서 왜 같이 사용하는지 생각해보았는데, 바로 메모리 낭비를 하지 않기위해서 같이 사용하는 것이었다.

public class FieldInit {
 static final int CONST_VALUE = 10;
 final int value = 10;
}
  • 위 코드처럼 value값을 초기화 하는 경우, 모든 인스턴스가 오른쪽 힙 영역 그림과 같이 모든 인스턴스에 value는 10을 가지게 된다.
  • 모든 인스턴스가 같은 값을 사용하기 때문에 결과적으로는 메모리를 낭비하게 된다. 또한 값이 계속 생성되는 것은 개발자가 보기에는 중복으로 보인다!

바로 이럴 때 사용하는 것이 static final을 같이 사용하는 것이다.

MY_VALUE는 static영역에 존재하고, final 키워드를 사용했기 때문에 값이 변하지 않게된다. 즉 static영역은 단 하나만 존재하기 때문에 MY_VALUE변수는 JVM에서 하나만 존재하기 때문에 메모리를 보다 더 효율적으로 사용할 수 있게 되었다.

profile
T자형 개발자가 되자

0개의 댓글