그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Java
Java

Java String은 왜 불변이며 어떤 이점이 있나요?

실무4/5
설계4/5
인간3/5
기초3/5

면접관의 질문 의도

불변이라는 결론을 외웠는지가 아니라, 풀·해시·스레드 안전·보안까지 이어지는 설계 의도를 같이 보는지 가르려는 질문이다.

큐레이션 답변

학습 자료

Java의 String은 내부 값을 바꿀 수 없는 불변 객체로 만들어졌고, concat·replace·substring 같은 연산은 늘 새로운 String 객체를 만들어 돌려준다. 이 불변성 덕에 동일한 리터럴은 문자열 상수 풀에서 공유돼 메모리가 절약되고, 멀티스레드 환경에서도 동기화 없이 안전하게 공유할 수 있다. 또 한 번 계산한 해시값을 안심하고 캐시해 둘 수 있어 HashMap 키로도 효율적이다. 단 리터럴("abc")과 new String("abc")는 객체 동일성이 다르고, intern()을 써야 풀 참조를 일치시킬 수 있다는 점은 따로 외워 둬야 한다.

좋은 답변 구조

  1. 01String 불변성이 무엇인지 한 줄로 정의한다
  2. 02풀 재사용·해시 캐싱·스레드 안전 같은 이점이 어떻게 나오는지 설명한다
  3. 03리터럴 생성과 new String 생성의 객체 동일성 차이를 비교한다
  4. 04intern과 민감 정보 처리에서 주의할 점을 덧붙인다

자주 실수하는 포인트

String 메서드 호출이 원본 객체를 바꾼다고 본다
리터럴과 new String이 항상 같은 인스턴스를 가리킨다고 오해한다
불변성을 외우기만 하고 스레드 안전·해시 캐싱과 연결하지 못한다

실무 맥락

  • 반복문 안에서 문자열을 누적해 객체가 폭주하는 코드가 의심되는 상황
  • 비밀번호·토큰 같은 민감 문자열이 풀에 박혀 남는지 검토해야 하는 환경
  • HashMap 키로 String을 광범위하게 쓰며 해시 분포를 같이 봐야 하는 코드

본인 경험에 녹이는 힌트

반복 문자열 결합으로 GC가 튄 코드를 StringBuilder로 다듬은 경험이 있다면 불변 비용 사례로 연결할 수 있다

민감 값이 String에 남는 보안 리뷰를 받아 본 적이 있다면 불변성과 보안 이슈를 엮어 말할 수 있다

intern을 켰다 끄며 메모리·CPU 영향을 비교해 본 경험이 있다면 풀 재사용 비용 판단으로 이을 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1StringBuilder와 StringBuffer는 어떤 상황에서 선택하나요
Q2JDK 버전에 따라 String 내부 표현이 달라진 점은 무엇인가요
Q3민감 정보에는 String 대신 어떤 타입이 더 적합한가요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문