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는 분명 최고의 선택이 될 수 있습니다!

반응형