Skip to content

TIL 25/03/02 - StringBuffer vs StringBuilder 개념과 차이점 #26

@shienka07

Description

@shienka07

🔒 공부하기전

알고리즘 문제를 풀면서 StringBuffer로 풀었는데, 타임이 오버되서 StringBuilder를 사용했더니 타임 오버가 안났다
둘의 차이를 크게 모르고 있었어서 공부해본다



StringBufferStringBuilder

StringBuffer란?

  • 멀티스레드 환경에서 안전하게 문자열을 수정할 수 있는 클래스
  • 동기화(Synchronization)를 지원하여 여러 스레드가 동시에 접근해도 데이터 손상이 없다
  • 하지만 동기화로 인해 성능이 다소 느릴 수 있다

StringBuilder란?

  • 싱글스레드 환경에서 빠르게 문자열을 수정할 수 있는 클래스
  • StringBuffer와 거의 동일한 기능을 제공하지만, 동기화를 지원하지 않아 더 빠르게 동작한다
  • 멀티스레드 환경에서는 안전하지 않지만, 일반적인 프로그램에서는 성능이 우수하다

StringBuffer vs StringBuilder 차이점

구분 StringBuffer StringBuilder
동기화(Synchronization) 지원 (멀티스레드 환경에서 안전) 지원하지 않음 (싱글스레드 환경에서 사용)
속도 상대적으로 느림 (동기화 때문) 더 빠름
멀티스레드 환경 사용 가능 사용 권장하지 않음
싱글스레드 환경 사용 가능하지만 비효율적 가장 적합

즉,

  • 멀티스레드 환경에서는 StringBuffer가 적합
  • 싱글스레드 환경에서는 StringBuilder가 더 빠르고 효율적

언제 사용하면 좋을까?

상황 추천 클래스 이유
멀티스레드 환경에서 문자열을 조작할 때 StringBuffer 동기화를 지원하여 안전
싱글스레드 환경에서 문자열을 빠르게 조작할 때 StringBuilder 동기화가 필요 없으므로 더 빠름


결론

StringBufferStringBuilder문자열을 효율적으로 수정할 수 있는 클래스
멀티스레드 환경에서는 StringBuffer, 싱글스레드 환경에서는 StringBuilder를 선택하는 것이 좋다!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions