본문 바로가기
언어(Language)/Java

[Java] StringBuffer 클래스

by 송기동 2025. 6. 8.
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