Java/Java 문법

private final VS private static final 왜 쓸까

민돌v 2022. 3. 10. 13:53

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();
    }
}

출처 : https://zorba91.tistory.com/275