반응형
안녕하세요. 여행하는 개발자입니다.
이번 포스팅에서는 Java에서 문자열을 다룰 때 자주 사용되는 String, StringBuffer, StringBuilder의 차이점에 대해 알아보겠습니다.
1. String이란?
String
은 Java에서 문자열을 저장하는 가장 기본적인 클래스입니다.
하지만 불변(Immutable) 객체이기 때문에 문자열을 수정하면 새로운 객체가 생성됩니다.
String str = "hello";
str += " world"; // 기존 문자열이 변경되는 것이 아닌, 새로운 String 객체 생성
2. StringBuffer란?
StringBuffer
는 mutable(가변)한 문자열을 다루는 클래스입니다.
Thread-safe(멀티쓰레드 환경에서 안전)하며, 문자열을 자주 수정하는 작업에 적합합니다.
StringBuffer sb = new StringBuffer("hello");
sb.append(" world"); // 문자열 자체가 변경됨
3. StringBuilder란?
StringBuilder
도 mutable한 문자열을 다루지만, 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
는 멀티쓰레드 환경에서 안정성이 필요할 때 사용하세요.
작업 환경과 목적에 따라 적절한 문자열 클래스를 선택하는 것이 성능과 효율성 향상에 매우 중요합니다.
반응형
'개발 Story > Java' 카테고리의 다른 글
[Java] HashMap과 HashSet 차이 (0) | 2025.06.24 |
---|---|
[Java] 람다식(Lambda)의 개념 및 사용법 (1) | 2025.06.17 |
[Java] public, private, protected 차이 (0) | 2025.06.17 |
[Java] int와 Integer 차이 (0) | 2025.06.16 |
[Java] 인터페이스(Interface) vs 추상 클래스(Abstract Class) (0) | 2025.06.02 |