728x90
StringBuffer 클래스
- 객체 생성 이후 문자열을 변경할 수 있는 클래스
- 내부적으로 문자열을 저장하기 위해 크기가 조절되는 버퍼를 사용
📌 String은 불변(immutable) 객체 → 수정 시 새로운 객체 생성
📌 StringBuffer는 가변(mutable) 객체 → 원래 객체 내부에서 문자열을 직접 수정
주요 특징
항목 | 설명 |
패키지 | java.lang (자동 import) |
가변성 | 문자열 내용을 자유롭게 추가, 삭제, 삽입 가능 |
동기화 | 스레드 안전함 (멀티스레드 환경에서 안전) |
성능 | StringBuilder보다 느리지만 안정성 확보됨 |
생성자
StringBuffer sb1 = new StringBuffer(); // 빈 버퍼(초기 버퍼 크기는 16)
StringBuffer sb2 = new StringBuffer("Hello"); // 초기값 설정
StringBuffer sb3 = new StringBuffer(50); // 용량 설정
주요 메서드 + 예제
StringBuffer sb = new StringBuffer("Hello");
메서드 | 설명 | 예시 결과 |
append(String) | 문자열 덧붙이기 | sb.append(" Java") → "Hello Java" |
insert(int, String) | 지정 위치에 삽입 | sb.insert(5, ",") → "Hello, Java" |
delete(int, int) | 범위 문자열 삭제 | sb.delete(5, 7) → "HelloJava" |
replace(int, int, String) | 문자열 치환 | sb.replace(0, 5, "Hi") → "HiJava" |
reverse() | 문자열 뒤집기 | sb.reverse() → "avaJiH" |
toString() | StringBuffer → String 변환 | String str = sb.toString(); |
setLength(int) | 문자열 길이 자르기/늘리기 | sb.setLength(3) → "ava" |
charAt(int) | 특정 위치 문자 반환 | sb.charAt(0) → 'a' |
String vs StringBuffer vs StringBuilder
항목 | String | StringBuffer | StringBuilder |
변경 가능 여부 | ❌ 불변 객체 | ✅ 가변 객체 | ✅ 가변 객체 |
스레드 안전성 | ✅ (불변이므로 안전) | ✅ (메서드가 synchronized) | ❌ (동기화 안 됨) |
실행 속도 | 느림 | 보통 | 가장 빠름 |
사용 용도 | 짧은 문자열, 불변성 | 멀티스레드 문자열 처리 | 단일 스레드에서 빠른 처리 |
✅ 요약
- StringBuffer는 수정 가능한 문자열 클래스
- append(), insert(), delete() 등 다양한 문자열 처리 메서드 제공
- 스레드 안전한 구조로, StringBuilder보다 느리지만 안정적
- 마지막에는 항상 .toString()으로 문자열을 꺼내 쓰는 게 일반적
728x90
'언어(Language) > Java' 카테고리의 다른 글
[Java] Number 클래스 (1) | 2025.06.08 |
---|---|
[Java] Wrapper Class (포장 클래스) (1) | 2025.06.08 |
[Java] java.lang 패키지 (1) | 2025.06.08 |
[Java] Object 클래스 (1) | 2025.06.08 |
[Java] 패키지 (1) | 2025.05.09 |