"String은 왜 불변일까" is 14 characters. Adding "Java" would make
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

String은 왜 불변일까

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

Java

대상자 대상자_정보 출력

  • Java 개발자(특히 면접 준비자, 핵심 개념 이해 필요자)*
  • 난이도: 중간(기초 언어 이해 기반)*

핵심 요약

  • 불변성은 메모리 효율성, 보안성, 멀티스레드 안전성을 보장
  • String Pool 메커니즘을 통해 같은 값의 객체 공유 가능
  • 가변성으로 인한 해킹/오류 위험 방지를 위한 설계 선택

섹션별 세부 요약

###1. 불변 객체의 개념

  • String은 참조형 타입으로, 값 변경 시 새로운 메모리 할당 발생
  • int와 달리 기본형은 메모리 변경 가능 vs 참조형은 불변성 강제
  • String a = "test"; a = "testtest"; 코드에서 기존 객체는 변하지 않고 새로운 객체 생성

###2. 보안성 고려

  • 민감 정보(비밀번호, ID) 저장 시 변경 가능성 방지
  • 가변성으로 인한 해킹/코드 오류로 인한 데이터 유출 방지

###3. 메모리 효율성

  • String Pool 메커니즘으로 중복 값의 메모리 공유 가능
  • 가변성 시 값 변경 시 메모리 관리 불가능으로 String Pool 활용 불가

###4. 멀티스레드 안전성

  • 불변성으로 인해 동기화 문제 발생 가능성 제거
  • 멀티스레드 환경에서 값 변경 없음으로 스레드 안전성 보장

###5. 결론

  • 불변성은 Java의 핵심 설계 원칙으로, 보안/성능/안정성 모두 강화
  • StringBuilder 사용 권장: 가변 연산이 필요한 경우

결론

  • String은 불변성으로 인해 보안/메모리/동기화에 유리하지만, StringBuilder를 사용해 가변 연산을 처리하는 것이 실무적이다.