개발합니다
[Java] private final, private static final 차이점 본문
자주 사용하면서도 정확하게 이해하지 못한 부분들이라 한번 정리 하는 시간을 가진다.
final이란?
final 키워드는 엔티티를 한 번만 할당한다.
final 필드는 초기값이 저장되면 최종적인 값이 되어 프로그램 실행 도중 수정이 불가능하다.
final은 클래스, 메소드, 변수 각각에 전부 붙을 수 있다.
static이란?
static을 붙이면 메모리에 딱 한 번만 할당되어 메모리를 효율적으로 사용할 수 있다.
static은 변수나 함수에 붙을 수 있다.
static + final = 같은 값을 같은 주소(메모리)에 지정해서 메모리 낭비 없이 사용하겠다는 것
private static final : 재할당 불가능. 메모리에 한 번 올라가면 같은 값을 클래스 내부의 전체 필드, 메소드에 공유.
private final : 재할당 불가능. 해당 필드, 메소드에서 호출할 때마다 새로 값을 할당(인스턴스화)한다.
private final로 선언하면 직접적으로 값을 참조할 수는 없지만, 생성자를 통해 값을 참조할 수 있다.
@Service
public class MovieFinder {
private final MovieReader movieReader;
@Autowired
public MovieFinder(MovieReader movieReader) {
this.movieReader = movieReader;
}
.
.
.
}
하지만 private static final의 경우에는 생성자를 통해 값을 참조할 수 없다.
이때 변수는 무조건 초기화되어 있어야 한다.
-> 초기화한 값을 끝까지 유지하기 위해서 (값을 불변으로 만듦.)
-참고 글
https://jwdeveloper.tistory.com/179
(JAVA) private final 과 private static final
문득 이런 생각이 들었다. 상수를 선언할 때 우리는 거의 명시적으로 private static final을 선언한다. private final로 선언하면 되지 굳이 static을 선언하는 이유가 무엇일까? 결론은 초기화한 값을 끝
jwdeveloper.tistory.com
'Web > Java' 카테고리의 다른 글
[Java] 람다식 (Lambda Expression) 사용법 (0) | 2022.03.30 |
---|