StringBuffer클래스
- String처럼 문자형 배열(char[ ])을 내부적으로 가지고 있다.
- 그러나 String과 달리 내용을 변경할 수 있다.(mutable)
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의 변경
- append() : 끝에 문자열 추가
- delete() : 삭제
- insert() : 삽입
- 위 메서드들은 지정된 내용을 StringBuffer에 추가 후, StringBuffer의 참조를 반환 -> 이어서 사용 가능
StringBuffer sb = new StringBuffer("abc");
sb.append("123");
sb.append("zz");
StringBuffer sb = new StringBuffer("abc");
sb.append("123").append("zz");
StringBuffer의 비교
- StringBuffer는 equals()가 오버라이딩되어있지 않다. (주소비교)
StringBuffer sb = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");
System.out.println(sb==sb2);
System.out.println(sb.equals(sb2));
- StringBuffer를 String으로 변환 후에 equals()로 비교해야 한다.
String s = sb.toString();
String s2 = sb2.toString();
System.out.println(s.equals(s2));