Skip to main content

Java: StringBuffer 주요 메서드 정리


1. StringBuffer란?

  • 가변(mutable) 문자열 클래스
  • StringBuilder와 API는 동일하지만, 멀티스레드 환경에서 안전하도록 모든 메서드에 synchronized 처리
  • 성능은 StringBuilder보다 약간 느리지만, 스레드 안정성 보장

2. 주요 메서드 + 내부 동작

아래 메서드들은 StringBuilder와 메서드명이 동일하며, 내부적으로 synchronized 블록을 포함한다는 점만 다름.


🔹 append(String str)

  • 문자열을 끝에 추가
  • 예: new StringBuffer("hi").append(" there") → "hi there"
  • 시간복잡도: O(1) (평균), O(n) (버퍼 확장 시)

🔹 insert(int offset, String str)

  • 지정 위치에 문자열 삽입
  • 예: "abc".insert(1, "X") → "aXbc"
  • 시간복잡도: O(n)

🔹 delete(int start, int end)

  • 주어진 범위 삭제
  • 예: "abcdef".delete(2, 4) → "abef"
  • 시간복잡도: O(n)

🔹 deleteCharAt(int index)

  • 인덱스에 해당하는 문자 하나 삭제
  • 예: "abc".deleteCharAt(1) → "ac"
  • 시간복잡도: O(n)

🔹 replace(int start, int end, String str)

  • 지정 범위 문자열을 새 문자열로 교체
  • 예: "abcde".replace(1, 4, "X") → "aXe"
  • 시간복잡도: O(n)

🔹 reverse()

  • 문자열을 뒤집음
  • 예: "hello".reverse() → "olleh"
  • 시간복잡도: O(n)

🔹 toString()

  • 최종 문자열을 String 객체로 반환
  • 예: sb.toString()
  • 시간복잡도: O(n)

🔹 setCharAt(int index, char c)

  • 인덱스 위치의 문자를 변경
  • 예: "java".setCharAt(1, 'o') → "jova"
  • 시간복잡도: O(1)

🔹 charAt(int index)

  • 지정 위치 문자 반환
  • 예: "java".charAt(2) → 'v'
  • 시간복잡도: O(1)

🔹 length()

  • 문자열 길이 반환
  • 예: "abc".length() → 3
  • 시간복잡도: O(1)

🔹 capacity()

  • 내부 버퍼 용량 반환
  • 예: new StringBuffer(10).capacity() → 10
  • 시간복잡도: O(1)

🔹 ensureCapacity(int minimumCapacity)

  • 버퍼 크기 미리 확보 (확장용)
  • 예: sb.ensureCapacity(100)
  • 시간복잡도: O(n) (버퍼 확장 시)

3. 체이닝 예시

StringBuffer sb = new StringBuffer("Hi");
String result = sb.append(" there")
                  .replace(0, 2, "Bye")
                  .reverse()
                  .toString();
System.out.println(result);  // "ereht eyB"

4. 주의사항

항목

설명

스레드 안전성

synchronized로 멀티스레드 환경에서 안전

성능

StringBuilder보다 약간 느림

내부 수정

✅ 같은 객체 내에서 수정

메서드 반환값

대부분 this → 체이닝 가능


✅ 요약 테이블

메서드

설명

시간복잡도

리턴값

append(String)

문자열 끝에 추가

O(1~n)

StringBuffer

insert(int, str)

중간에 삽입

O(n)

StringBuffer

delete(start, end)

구간 삭제

O(n)

StringBuffer

deleteCharAt(idx)

문자 하나 삭제

O(n)

StringBuffer

replace(s, e, str)

구간 대체

O(n)

StringBuffer

reverse()

문자열 뒤집기

O(n)

StringBuffer

charAt(int)

문자 조회

O(1)

char

setCharAt(i, c)

문자 수정

O(1)

void

length()

문자열 길이

O(1)

int

capacity()

버퍼 크기 조회

O(1)

int

ensureCapacity(n)

최소 용량 확보

O(n)

void

toString()

문자열 객체 반환

O(n)

String