📌 String vs StringBuilder vs repeat() 비교
1️⃣ String
- 불변(Immutable): 한 번 생성되면 변경할 수 없음.
- 새 객체 생성:
+ 연산 시 새로운 String 객체가 생성되어 메모리 낭비 가능.
- 멀티스레드 안전:
String은 Thread-Safe.
2️⃣ StringBuilder
- 가변(Mutable): 기존 객체를 직접 수정하여 메모리 절약 & 성능 향상.
- 빠른 문자열 조작:
append(), insert(), delete() 등 제공.
- 단일 스레드에서만 안전 (
StringBuffer는 멀티스레드 지원).
3️⃣ repeat() (Java 11+)
- 문자열 반복:
repeat(k)를 사용하여 k번 반복한 문자열을 반환.
- 새 객체 생성: 반복 시 새로운
String 객체를 생성하여 메모리 사용 증가 가능.
📝 비교표
| 특징 | String (불변) | StringBuilder (가변) | repeat() (Java 11+) |
|---|
| 가변성 | ❌ 불변 | ✅ 가변 | ❌ 불변 |
| 메모리 사용 | 🔺 높음 | ✅ 낮음 | 🔺 높음 |
| 성능 | 🔺 느림 | ✅ 빠름 | 🔺 반복 횟수 많으면 느림 |
| 사용 목적 | 변경이 적을 때 | 문자열 조작이 많을 때 | 문자열 반복 시 |
| 멀티스레드 | ✅ 안전 | ❌ 안전하지 않음 | ✅ 안전 |
| 지원 버전 | Java 1.0+ | Java 1.5+ | Java 11+ |
🎯 언제 사용해야 할까?
- 변경이 거의 없는 문자열 →
String 사용.
- 문자열을 자주 수정해야 하는 경우 →
StringBuilder 사용.
- 문자열을 반복해야 하는 경우 →
repeat() 사용(Java 11 이상).