StringBuilder — 가변 문자열 클래스
StringBuilder — 가변 문자열 클래스
StringBuilder는 변경 가능한(mutable) 문자 시퀀스예요. 이 클래스는 StringBuffer와 호환되는 API를 제공하지만 동기화되지 않아 스레드 안전을 보장하지 않아요. StringBuilder는 단일 스레드에서 문자열 버퍼를 사용할 때 StringBuffer보다 우선해서 사용돼요 — StringBuffer의 과도한 동기화 오버헤드가 없기 때문이에요. 대부분의 구현에서 StringBuilder는 단일 스레드에서 StringBuffer보다 더 빠르게 동작해요. 안전하지 않지만 주로 단일 스레드 문자열 조립에 사용돼요.
본문
StringBuilder는 AbstractStringBuilder를 상속하고 CharSequence, Appendable, Serializable을 구현해요.
주요 생성자: StringBuilder(), StringBuilder(int capacity), StringBuilder(String str), StringBuilder(CharSequence seq).
주요 메서드:
public int length() — 길이를 반환해요.
public int capacity() — 현재 용량을 반환해요.
public void ensureCapacity(int minimumCapacity) — 최소 용량을 보장해요.
public void setLength(int newLength) — 길이를 설정해요.
public char charAt(int index) — 지정된 인덱스의 문자를 반환해요.
public void setCharAt(int index, char ch) — 지정된 인덱스의 문자를 설정해요.
public StringBuilder append(...) — 다양한 오버로드로 값을 끝에 추가해요. append(Object), append(String), append(int), append(boolean), append(char[]), append(double) 등이 있어요. 항상 this를 반환해 체이닝을 지원해요.
public StringBuilder insert(int offset, ...) — 지정된 오프셋에 값을 삽입해요.
public StringBuilder delete(int start, int end) / deleteCharAt(int index) — 부분 시퀀스를 제거해요.
public StringBuilder replace(int start, int end, String str) — 부분 시퀀스를 대체해요.
public StringBuilder reverse() — 시퀀스의 순서를 반대로 해요.
public String toString() — 버퍼 내용의 새 String을 반환해요.
public int indexOf(String str) / lastIndexOf(String str) — 부분 문자열을 검색해요.
public CharSequence subSequence(int start, int end) / substring(int start) — 부분 시퀀스를 반환해요.
StringBuilder는 반복적인 문자열 연결(+)보다 효율적으로 문자열을 조립하는 데 널리 사용돼요. append 등이 this를 반환하므로 메서드 체이닝으로 간결하게 작성할 수 있어요. 여러 스레드가 동시에 접근해야 한다면 동기화된 StringBuffer나 String을 사용해야 해요.