String vs StringBuffer vs StringBuilder 차이
String
- 불변(immutable)
- 문자열 수정 시 새로운 String 인스턴스가 생성된다.
- 멀티쓰레드 환경에서 안전(thread-safe)
- 문자열 추가, 수정, 삭제 등의 연산이 빈번하게 발생하면 힙 메모리(Heap)에 많은 임시 가비지(Garbage)가 생성되어 힙 메모리 부족으로 성능에 치명적인 영향을 끼친다.
String str = "hello";
str = str + "world";
StringBuffer
- 가변(mutable)
- 멀티쓰레드 환경에서 안전(thread-safe)
StringBuilder
- 가변(mutable)
- 동기화 지원 X
- 단일쓰레드에서의 성능 StringBuffer 보다 뛰어나다.
정리
String : 문자열 연산이 적고 멀티쓰레드 환경일 경우
StringBuffer : 문자열 연산이 많고 멀티쓰레드 환경일 경우
StringBuilder : 문자열 연산이 많고 단일쓰레드이거나 동기화를 고려하지 않아도 되는 경우
참고