Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

개발합니다

[Java] private final, private static final 차이점 본문

Web/Java

[Java] private final, private static final 차이점

돈기법 2022. 3. 30. 17:41

자주 사용하면서도 정확하게 이해하지 못한 부분들이라 한번 정리 하는 시간을 가진다.

 

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