[Java] 문자열 클래스(String, StringBuffer, StringBuilder)

이찬혁·2024년 6월 24일

Java

목록 보기
14/15

문자열 클래스(String, StringBuffer, StringBuilder)

String 클래스

  • new를 통해 생성된 인스턴스의 메모리 공간은 변하지 않음(Immutable)
  • GC로 제거되어야 함
  • 문자열 연산 시 새로 객체를 만드는 Overhead 발생
  • 불변 객체로써, 멀티 쓰레드 환경에서 동기화 문제가 발생하지 않음(조회 연산에 매우 큰 장점)

따라서, 문자열 연산이 적고, 조회가 많은 멀티 쓰레드 환경에서 사용하기 용이하다.

StringBuffer, StringBuilder 클래스

공통점

  • new를 통해 하나의 인스턴스를 생성(Mutable)
  • 문자열 연산 시 새로 객체를 만들지 않고, 크기를 변경시킴
  • 제공되는 메소드가 동일함

차이점

  • StringBuffer는 Thread-Safe함(동기화 지원) / StringBuilder는 Thread-safe하지 않음
  • StringBuilder는 동기화를 지원하지 않는 반면 속도면에선 StringBuffer 보다 성능이 좋다

따라서, 두 클래스 모두 문자열 연산이 많은 경우 사용하기 적합하고, 멀티쓰레드 환경이냐 아니냐에 따라 선택할 수 있는 클래스가 다르다.

클래스 별 비교 요약

분류StringStringBufferStringBuilder
변경ImmutableMutableMutable
동기화-동기화 가능(Thread-safe)동기화 불가능
profile
나의 개발로그

0개의 댓글