티스토리 뷰

JAVA

private static final에 대해서

gajy 2021. 5. 25. 23:17
728x90

흔히 클래스 멤버변수를 상수로(final)만들고자 할 때, 클래스 상수(static final)로 만들어준다. 

 

- final 변수: 한번 초기화 가능. 

- final 메서드: 오버라이드하거나 숨길 수 없다.

- final 클래스: 상속 불가

 

- static 멤버 변수(클래스 변수)

- static 메서드(클래스 메서드): 오버라이드 불가, 상속클래스에서 보이지 않음.

- static 블록: 클래스가 초기화 될 때 실행되고, main()보다 먼저 실행

- static 클래스

- static import

 

왜 static final이냐?

==> 어차피 모든 클래스 인스턴스에서 똑같이 서야할 값이기 때문에 클래스 레벨에서 한번만 잡아서 하나의 메모리 공간을 계속해서 사용하면 되기 때문 (그렇지 않으면 인스턴스가 생성될때마다 새로 메모리를 잡고 초기화해야한다.)

 

1. static 없이 final: 실무에서 많이 사용 함

2. final 없이 static : static 필드는 클래스 스코프 전역 변수인데, final을 쓰지 않으면 mutable해진다. 이는 모든 클래스가 값을 변경 할 수 있으므로, 값 추론이나 테스트가 어렵고, 동시성 프로그래밍을 어렵게 만든다.

 

참고자료: https://djkeh.github.io/articles/Why-should-final-member-variables-be-conventionally-static-in-Java-kor/

 

왜 자바에서 final 멤버 변수는 관례적으로 static을 붙일까?

자바 final, static 키워드와 코딩 best practice 되짚어보기

djkeh.github.io

728x90

'JAVA' 카테고리의 다른 글

String.valueOf() vs. Object.toString()  (0) 2022.04.02
정규식  (0) 2022.04.02
Clean Code 정리 링크  (0) 2021.05.25
시그니처를 유지하면서 리팩토링하는 방법  (0) 2021.05.25
원시값, 문자열 포장  (0) 2021.05.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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