mutable(가변) 객체
내부 버퍼를 사용하여 문자열을 효율적으로 수정 가능
StringBuilder sb = new StringBuilder("Hello");
sb.append("World"); // 같은 객체 내에서 문자열 수정
🔹 String과의 차이점
String은 immutable(불변) 객체
문자열을 변경하면 새로운 문자열 객체가 생성됨.
String s = "Hello";
s = s + "World"; // 새로운 문자열 객체가 생성됨
| 메서드 | 설명 |
|---|---|
| append(String str) | 문자열 뒤에 덧붙이기 |
| insert(int offset, String str) | 특정 위치에 삽입 |
| delete(int start, int end) | 지정된 범위 문자열 삭제 |
| deleteCharAt(int index) | 특정 인덱스 문자 하나 삭제 |
| replace(int start, int end, String str) | 범위를 다른 문자열로 대체 |
| reverse() | 문자열 뒤집기 |
| toString() | 최종 문자열(String 타입)로 변환 |
public class Example {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
System.out.println(sb.toString()); // 출력: Hello World
sb.insert(5, ",");
System.out.println(sb.toString()); // 출력: Hello, World
sb.reverse();
System.out.println(sb.toString()); // 출력: dlroW ,olleH
}
}
반복문에서 문자열을 누적하거나 결합할 때
→ String 대신 StringBuilder를 쓰면 메모리 낭비 없이 훨씬 빠름
| 항목 | StringBuilder | StringBuffer |
|---|---|---|
| 스레드 안전성 | ❌ 비동기 (단일 스레드용) | ✅ 동기화 (멀티 스레드용) |
| 속도 | 더 빠름 | 상대적으로 느림 |
대부분의 일반적인 상황에서는 StringBuilder를 사용하면 충분하다!