728x90
static
정적(필드, 메서드).
메서드 영역에 저장된다(메서드 영역=클래스 영역=스태틱 영역)
객체 생성하지 않아도 사용할 수 있음.
공용주방이라 생각하자.
static(공용주방)에 있는 필드(라면)는 어느 클래스(객실)에서도 사용 가능.
final
고정불변의 값.
객체 생성해야만 사용 가능.
final + 필드 | final + 메서드 | final + 클래스 |
최초 default값. 한번 정의된 값은 변경 불가. 생성자를 통한 초기화 필!수! |
오버라이딩(재정의) 금지 | 상속 불가("나만 쓸거야!") |
static final
static이 붙지 않고 final만 붙은 필드는 생성자를 통해 무조건적인 초기화가 필요.
객체 생성시 초기화를 해줄 때마다 사용자 마음대로 다른 초기화를 해줄 수 있으므로 상당히 유동적이다.
유동적인게 왜 문제냐?
어디에서도 수정할 수 없는 고유의 값인, 예로들어 '국적'같은 것들을 마음대로 바꿔버리면, 한 사람이 어느 클래스에서는 한국인, 어느 클래스에서는 미국인이 될 수도 있는 상황!
➥ ~ 그 ~ 래 ~ 서~
이러한 유동성을 제거하여
"어디에서도 수정할 수 없도록", "고정 불변의 값을 어디에서도 사용 가능"하도록 하기 위해 static final을 사용.
TIP
static final 변수 명은 대문자로만 할 것을 권장.
ex) static final int EXCHANGED_RATE = 5;
728x90
'자료구조' 카테고리의 다른 글
+) [JAVA] 힙정렬 알고리즘 정리 - heap sort (0) | 2023.03.15 |
---|---|
[알고리즘] 자바로 순열, 조합 (nPr, nCr) java (0) | 2023.03.05 |
+) JAVA BufferedReader & Scanner 차이, 버퍼란? (0) | 2023.02.21 |
+) JAVA 문자열 비교하기 ==, equals() (0) | 2023.02.21 |
스택(Stack), 큐(Queue), DFS & BFS 기본 개념 (0) | 2023.02.18 |