JAVA
💡 Java의 StringBuilder — 문자열 처리의 효율적인 선택
olbiizl_
2025. 4. 6. 01:00
자바에서 문자열을 다룰 때 가장 많이 사용하는 클래스는 String입니다.
그런데 반복문 안에서 문자열을 계속 붙이다 보면, StringBuilder를 사용했을 때 훨씬 효율적입니다.
이번 글에서는 StringBuilder가 무엇인지, 왜 성능이 더 좋은지, 그리고 실제 예시를 통해 비교해보겠습니다.
📌 StringBuilder란?
StringBuilder는 Java에서 가변(mutable)한 문자열을 만들고 다룰 수 있게 해주는 클래스입니다.
기존의 String 클래스는 불변(immutable) 속성을 가지기 때문에, 문자열을 변경할 수 없고 변경이 필요할 경우 새로운 문자열 객체가 생성됩니다.
String str = "a";
str += "b"; // str은 새로운 객체로 재할당됨
반면, StringBuilder는 내부 버퍼를 사용해서 기존 객체 안에서 문자열을 수정하기 때문에 성능 면에서 매우 유리합니다.
✅ StringBuilder 사용법
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World!");
System.out.println(sb.toString()); // 출력: Hello World!
- append() 메서드를 사용해서 문자열을 덧붙일 수 있습니다.
- toString() 메서드를 호출하면 최종 문자열을 얻을 수 있습니다.
🔁 반복문에서의 차이점
// String 사용
String str = "";
for (int i = 0; i < 10000; i++) {
str += "a"; // 매번 새로운 String 객체 생성
}
// StringBuilder 사용
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
sb.append("a"); // 같은 객체에 추가됨
}
🚀 성능 비교
아래는 String과 StringBuilder의 성능을 비교한 코드입니다:
public class Main {
public static void main(String[] args) {
long start, end;
// String
start = System.currentTimeMillis();
String str = "";
for (int i = 0; i < 100000; i++) {
str += "a";
}
end = System.currentTimeMillis();
System.out.println("String: " + (end - start) + "ms");
// StringBuilder
start = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100000; i++) {
sb.append("a");
}
end = System.currentTimeMillis();
System.out.println("StringBuilder: " + (end - start) + "ms");
}
}
✅ 결과 (예시):
String: 1800ms
StringBuilder: 5ms
StringBuilder가 압도적으로 빠른 것을 확인할 수 있습니다.
🎯 언제 StringBuilder를 써야 할까?
- 문자열을 반복문 안에서 여러 번 변경하거나 이어붙일 때
- 대용량 문자열을 다룰 때
- 성능이 중요한 경우
⚠️ 단, 문자열을 자주 수정하지 않거나, 코드가 간단할 필요가 있을 때는 String으로도 충분합니다.
🧠 마무리 정리
항목 | String | StringBuilder |
변경 가능 여부 | ❌ (불변) | ✅ (가변) |
성능 | 느림 (객체 반복 생성) | 빠름 (하나의 객체에서 처리) |
사용 용도 | 간단한 문자열 처리 | 반복적이고 성능이 중요한 작업 시 |
자바에서는 상황에 맞게 String과 StringBuilder를 선택하는 것이 중요합니다.
문자열을 자주 수정하는 상황이라면, StringBuilder는 분명 최고의 선택이 될 수 있습니다!
반응형