반응형

안녕하세요. 여행하는 개발자입니다.
이번 포스팅에서는 Java에서 문자열을 다룰 때 자주 사용되는 String, StringBuffer, StringBuilder의 차이점에 대해 알아보겠습니다.

1. String이란?

String은 Java에서 문자열을 저장하는 가장 기본적인 클래스입니다.
하지만 불변(Immutable) 객체이기 때문에 문자열을 수정하면 새로운 객체가 생성됩니다.

String str = "hello";
str += " world"; // 기존 문자열이 변경되는 것이 아닌, 새로운 String 객체 생성

 

2. StringBuffer란?

StringBuffermutable(가변)한 문자열을 다루는 클래스입니다.
Thread-safe(멀티쓰레드 환경에서 안전)하며, 문자열을 자주 수정하는 작업에 적합합니다.

StringBuffer sb = new StringBuffer("hello");
sb.append(" world"); // 문자열 자체가 변경됨

 

3. StringBuilder란?

StringBuildermutable한 문자열을 다루지만, Thread-safe하지 않음 대신 더 빠릅니다.
즉, 단일 쓰레드 환경에서 성능이 더 우수합니다.

StringBuilder sb = new StringBuilder("hello");
sb.append(" world");

✅ 4. 세 클래스 비교

항목 String StringBuffer StringBuilder
가변 여부 불변 (Immutable) 가변 (Mutable) 가변 (Mutable)
Thread-safe O O X
성능 낮음 보통 높음
사용 환경 변경이 적은 문자열 멀티쓰레드 환경 단일 쓰레드 환경

 

✅ 5. 간단 비교 예시

String str = "a";
str += "b"; // 새로운 객체 생성

StringBuffer sb = new StringBuffer("a");
sb.append("b"); // 같은 객체에 문자열 추가

StringBuilder sb2 = new StringBuilder("a");
sb2.append("b"); // 같은 객체에 문자열 추가

 

6. 결론

String은 변경이 적은 데이터에 사용하고, StringBuilder단일 쓰레드에서 성능 최적, StringBuffer멀티쓰레드 환경에서 안정성이 필요할 때 사용하세요.

작업 환경과 목적에 따라 적절한 문자열 클래스를 선택하는 것이 성능과 효율성 향상에 매우 중요합니다.

반응형

+ Recent posts