java
final 과 static final 의 차이?
무비인
2022. 2. 20. 18:53
매직 넘버/매직 리터럴을 static final로 선언하는 이유가 뭘까?
범위를 표현하거나, 출력문을 사용하면서 이전에 읽었던 자바 코딩의기술 내용 중 매직넘버를 상수로 대체 하라는 내용이 떠올랐다.
그래서 static final 을 사용해서 구현했는데,
문득 불변함을 표시하고 변수명으로 사용 의미를 표현하려면 final로도 충분하지 않나? 라는 생각이 들었고 알아보기로 했다.
매직 넘버/매직 리터럴
프로그래밍에서 상수로 선언하지 않은 숫자를 매직 넘버, 문자열을 매직 리터럴이라고 한다.
final
final은 해당 오브젝트가 단 한번 할당할 수 있음을 의미한다. 즉 값이 변하지 않음을 의미한다.
static
데이터가 프로그램 실행 직후부터 끝날 때까지 메모리 수명이 유지됨을 의미한다.
매직 넘버/매직 리터럴을 static final로 선언하는 이유가 뭘까?
이 값들은 모든 클래스 인스턴스에서 똑같이 사용할 값이기 때문에,
클래스 레벨에서 처음 한번만 하나의 메모리 공간을 할당하고 계속 사용하면 메모리 절약이 가능하기 때문임을 알게 되었다.
느낀점
해당 내용을 찾아보며 미션으로 짠 코드가 static final 의 장점을 못살리고 있다고 느꼈다.
리팩토링 해야겠다.
그리고 네이밍을 할 때 어떻게하면 더 직관적으로 사용 의미가 들어나게 할지? 고민해봐야겠다.