# String
| 분류 | String | StringBuffer | StringBuilder |
|---|---|---|---|
| 변경 | Immutable | Mutable | Mutable |
| 동기화 | Synchronized 가능 (Thread-safe) | Synchronized 불가능 | |
| 사용 | 문자열 연산이 적은 환경 조회가 많은 멀티 스레드 환경 | 문자열 연산이 많은 환경 멀티 스레드 환경 | 문자열 연산이 많은 환경 싱글 스레드 또는 스레드 신경 안쓰는 환경 |
# String 특징
- new 연산을 통해 생성된 인스턴스의 메모리 공간은 변하지 않음
- GC를 통해 제거됨
- 문자열 연산 시 새로 객체를 만드는 오버헤드 존재
- 불변 객체이므로 멀티 스레드에서 동기화를 신경쓸 필요가 없음
# StringBuffer, StringBuilder 특징
- new 연산으로 클래스를 한번만 만듦
- 문자열 연산시 새로 객체를 만들지 않고 크기를 변경시킴
- StringBuffer와 StringBuilder 클래스의 메서드가 동일함
- StringBuffer는 ThreadSafe, StringBuilder는 ThreadSafe하지 않음