private final VS private static final
final
- final은 무언가를 제한하겠다는 의미
- final은 재할당을 제한함 - 메모리의 재할당, 즉 값은 변할 수 있음
- 상수의 경우 재할당을 하지 못하면, 초기화값이 불변하기 때문에 값이 불변
static
- static은 값을 static(정적) 메모리 영역에 올리겠다는 선언
- 즉, 어디에서 호출해도, 모든 곳에서 데이터를 공유함 - 정적메모리 영여에 올려져있어 전역적으로 사용이 가능
[예시]
public class MutableTest {
private final Map<String, Object> mutableMap = new HashMap<>();
public void testFinal() {
// 재할당 안됨
// mutableMap = new HashMap<>();
mutableMap.put("choco", "M&M");
mutableMap.put("jelly", "haribo");
System.out.println(mutableMap.toString());
}
public static void main(String[] args) {
MutableTest mutableTest = new MutableTest();
mutableTest.testFinal();
}
}
'Java > Java 문법' 카테고리의 다른 글
[JAVA] record 불변 객체 타입 (feat Lombok @Value) (0) | 2022.06.02 |
---|---|
[JAVA8] Stream API란 - fiter /map /of 사용방법 (0) | 2022.05.24 |
ArrayList<Dto> Map value 값으로 정렬 (0) | 2022.01.16 |
[JAVA] 자바 문자열 다루기 (0) | 2022.01.07 |
[Java] Map 모든 인덱스 조회하기 (0) | 2021.07.22 |