Skip to content
Discussion options

You must be logged in to vote

String 과 StringBuilder/StringBuffer


String

  • String 객체는 한번 값이 할당되면 공간은 변하지 않으며, 이것을 불변성 이라고 한다.
  • 따라서 String 과 String 을 더하게 될 경우에, 새로운 String 객체를 생성해야한다. (메모리 할당과 메모리 해제가 계속 발생)
  • 연산이 자주 일어나는 로직에서는 힙 메모리에 많은 가비지가 생성되어 힙메모리 부족으로 성능에 문제가 생길 수 있음

StringBuilder/StringBuffer

  • StringBuilder 와 StringBuffer 는 한번 값이 할당되더라도 기존 데이터에 새로운 데이터를 취하기 때문에 속도가 더 빠르다.
  • 할당된 공간이 변하는 특성인 가변성 을 가지고 있다.

StringBuilder VS StringBuffer

  • 둘의 가장 큰 차이점은 동기화의 유무 이다.
  • StringBuffer 는 동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전하다. (thread-safe)
  • StringBuilder 는 동기화는 지원하지 않기에 멀티쓰레드 환경에서는 적합하지는 않다. 그러나, 단일 쓰레드 환경에서는 뛰어나다.

StringBuffer

StringBuilder

Synchronized 란?

  • 여러 개의 스레드가 한 개의 자원에 접근하려고 할 때, 현재 데이터를 사용하고 있는 스레드를 제외하고, 나머지 스레드의 접근을 막는다.

Replies: 1 comment

Comment options

6om1n
Jul 12, 2024
Maintainer Author

You must be logged in to vote
0 replies
Answer selected by YuDeokRin
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1 participant