StringBuffer — 스레드 안전한 가변 문자열 클래스
StringBuffer — 스레드 안전한 가변 문자열 클래스
StringBuffer는 스레드 안전(thread-safe)하고 변경 가능한(mutable) 문자 시퀀스예요. 문자열 버퍼는 String과 비슷하지만 수정할 수 있어요. 언제든지 toString 메서드를 호출해 버퍼 내용을 String으로 변환할 수 있어요. StringBuffer의 필요한 거의 모든 메서드는 동기화되어 있어, 여러 스레드가 하나의 StringBuffer에 접근해도 안전해요. 동기화 오버헤드를 원하지 않는 단일 스레드 코드에서는 StringBuilder가 더 나은 선택이에요. 단일 스레드가 문자열 버퍼에 접근하는 시나리오에서는 StringBuilder가 우선돼요.
본문
StringBuffer는 AbstractStringBuilder를 상속하고 CharSequence, Appendable, Serializable을 구현해요.
주요 생성자: StringBuffer(), StringBuffer(int capacity), StringBuffer(String str), StringBuffer(CharSequence seq).
주요 메서드:
public synchronized int length() — 버퍼의 길이(문자 수)를 반환해요.
public synchronized int capacity() — 현재 용량을 반환해요.
public synchronized void ensureCapacity(int minimumCapacity) — 최소 용량을 보장해요.
public synchronized void setLength(int newLength) — 시퀀스의 길이를 설정해요.
public char charAt(int index) — 지정된 인덱스의 문자를 반환해요.
public synchronized void setCharAt(int index, char ch) — 지정된 인덱스의 문자를 설정해요.
public synchronized StringBuffer append(...) — 다양한 오버로드로 문자열·숫자·객체를 끝에 추가해요. append(Object), append(String), append(int), append(double), append(char[]) 등이 있어요.
public synchronized StringBuffer insert(int offset, ...) — 지정된 오프셋에 값을 삽입해요.
public synchronized StringBuffer delete(int start, int end) / deleteCharAt(int index) — 문자 시퀀스를 제거해요.
public synchronized StringBuffer replace(int start, int end, String str) — 부분 시퀀스를 대체해요.
public synchronized StringBuffer reverse() — 시퀀스의 순서를 반대로 해요.
public synchronized String toString() — 버퍼 내용에서 새 String을 만들어 반환해요.
public int indexOf(String str) / indexOf(String str, int fromIndex) ... lastIndexOf(...) — 부분 문자열을 검색해요.
public synchronized CharSequence subSequence(int start, int end) ... substring(int start) — 부분 시퀀스를 반환해요.
StringBuffer에 대한 변경 작업의 거의 모든 것이 동기화되어 있으므로, 멀티스레드 공유 문자열 조립에는 안전하지만 StringBuilder보다 느려요. 단일 스레드에서는 StringBuilder를 사용하는 것이 권장돼요.