전체 방문자
오늘
어제
모달조아
Better than yesterday
모달조아
  • 분류 전체보기 (147)
    • PS (86)
      • BOJ (79)
      • 프로그래머스 (6)
    • 이론 (41)
      • 자료구조 (2)
      • 알고리즘 (8)
      • 데이터베이스 (1)
      • 운영체제 (1)
      • 네트워크 (3)
      • 디자인패턴 (7)
      • Java (13)
      • Spring (4)
      • JPA (1)
      • Git (1)
    • 개발 (18)
    • 프로젝트 (1)
    • 기록 (0)
      • 후기 (0)
    • etc (1)

최근 글

티스토리

hELLO · Designed By 정상우.
모달조아

Better than yesterday

이론/Java

final 키워드 헷갈리는 부분 정리

2021. 11. 11. 15:57
private final Map<Long, Member> store = new HashMap<>();

위와 같은 코드가 있다고 했을 때, store가 가리키는 실제 데이터들이 바뀌면 안된다고 잘못 생각하고 있었다.
원시 타입 변수의 경우 값이 스택에 저장되고, 객체 타입은 주소는 스택에 값은 힙에 저장된다.
store가 무엇을 가리키는지 즉, 가리키는 주소가 바뀌면 안된다는 것이지 힙 안의 값이 바뀌는 것은 상관이 없다.
힙 안의 값도 불변이길 원한다면 Collections.unmodifiableMap() 를 이용해보자.
final을 값이 변하지 않는다고 이해하지 말고, 한번만 할당할 수 있다고 이해하자.

저작자표시 (새창열림)

'이론 > Java' 카테고리의 다른 글

BufferedReader, BufferedWriter 사용 후 close 해야하는 이유  (0) 2022.11.22
상수와 static final  (0) 2022.11.22
java.lang 패키지 / 오토 박싱/ 오토 언박싱  (0) 2021.07.28
Java Object 클래스  (0) 2021.07.27
Java 콘솔 입출력(I/O)  (0) 2021.07.14
    '이론/Java' 카테고리의 다른 글
    • BufferedReader, BufferedWriter 사용 후 close 해야하는 이유
    • 상수와 static final
    • java.lang 패키지 / 오토 박싱/ 오토 언박싱
    • Java Object 클래스
    모달조아
    모달조아

    티스토리툴바