[JAVA] private final vs private static final

mmm·2023년 4월 17일
0

private final vs private static final

static ?

  • static은 정적이라는 의미
  • static이 붙은 멤버(메서드, 필드)는 클래스에 고정되어 공유되는 정적인 멤버
  • static 키워드를 통해 생성된 정적멤버들은 힙 영역이 아닌 스태틱 영역에 할당
  • 가비지 컬렉션의 관리를 받지 않으므로 정적 멤버들은 프로그램의 종료시까지 메모리가 할당된 채로 존재
    • → 너무 많이 만들면 시스템에 좋지 않은 영향

final ?

  • final 키워드는 변수, 메서드, 클래스에 붙일 수 있음
  • 변수의 경우, 값을 수정할 수 없으므로 꼭 초기화를 해주어야 함
  • 메서드의 경우 오버라이드를 제한함
  • 클래스의 경우 상속 불가능한 클래스가 됨

private final vs private static final

  • 두 키워드가 붙은 변수는 재할당이 불가능

private final : 생성자로 참조 가능, 호출 시 새로 값이 할당됨

private static final : 생성자로 참조 불가능, 메모리에 한 번 올라가면 같은 값을 클래스에서 공유

profile
mmm

0개의 댓글