[Java] String과 StringBuilder, StringBuffer

이대건·2023년 11월 22일

Java

목록 보기
3/17
post-thumbnail

본 글에서는 문자열을 저장하는 객체인 String과 StringBuilder, StringBuffer의 차이점에 대해 알아보자.

String

  • 상수로서 immutable한 속성을 가진다.

StringBuilder

  • String과 달리 mutable한 속성을 가진다
  • Thread safe하지 않다.
    - 다른 thread에서 StringBuilder 객체를 수정할 수 없다.
  • synchronization을 지원하지 않는다.
  • StringBuffer보다 더 빠르다

StringBuffer

  • Thread safe하다.
    - 다른 thread에서 StringBuffer 객체를 수정해도 괜찮다.
  • synchronization을 지원한다.
  • 위의 이유로 StringBuilder보다 느리다.

각각 언제쓰는가?

  1. String은 변하지 않는 기본적인 문자열을 저장할 때 사용한다.
  2. StirngBuilder는 가변 문자열, 단일 스레드 환경에서 사용한다.
  3. StringBuffer는 가변 문자열, 다중 스레드 환경에서 사용한다.
    -> 다만 최근에는 JVM과 하드웨어의 성능 향상으로 인해 단일 스레드만으로도 충분하여 StringBuilder를 주로 사용하는 추세이다.

정리

StringStringBuilderStringBuffer
가변성XOO
Thread safe-XO
동기성-XO
성능-빠름느림
profile
일낸머스크

0개의 댓글