[Java] 9장 - StringBuffer, StringBuilder 클래스

N’oublie pas de t’aimer·2025년 1월 5일

Java

목록 보기
5/18

StringBuffer 클래스

  • String처럼 문자형 배열(char[])을 내부적으로 가지고 있다.
public final class StringBuffer implements java.io.Serializable {
	private char[] value;
    ...
}
  • 그러나 String과 달리 내용을 변경할 수 있다.
StringBuffer sb = new StringBuffer("abc");
sb.append("123");

StringBuffer 내부 코드

public StringBuffer(int length) {
	value = new char[length];
    shared = false;
}

public StringBuffer() {
	this(16); // 기본 크기
}

public StringBuffer(String str) {
	this(str.length() + 16);
    append(str);
}

  • StringBuffer는 String과 달리 equals()가 오버라이딩 되어있지 않다.
    즉 equals()가 주소를 비교한다.
StringBuffer sb = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");

System.out.println(sb==sb2); // false
System.out.println(sb.equals(sb2)); // false

StringBuffer의 생성자와 메서드




StringBuilder

  • StringBuffer는 동기화되어 있다. 멀티 쓰레드에 안전(thread-safe)
  • 그러나 멀티 쓰레드 프로그램이 아닌 경우, 동기화는 불필요한 성능저하이다.
  • 이럴 땐 StringBuffer대신 StringBuilder를 사용하여 성능 향상
profile
매일 1퍼센트씩 나아지기 ୧(﹒︠ ̫ ̫̊ ̫﹒︡)୨

0개의 댓글