Ch9-15~18. StringBuffer
0. 목차
Chapter9. java.lang 패키지와 유용한 클래스
Ch9 - 15. StringBuffer 클래스
Ch9 - 16. StringBuffer의 생성자
Ch9 - 17. StringBuffer의 변경
Ch9 - 18. StringBuffer의 비교
Ch9 - 15. StringBuffer 클래스
▶ StringBuffer 클래스란?
▷ 문자열을 저장하고 다루기 위한 클래스
▷ String처럼 문자형(char[])을 내부적으로 가짐
- StringBuffer code
public final class StringBuffer implements java.io.Serializable { private char[] value; ... }
▷ String : 내용 변경 불가 ↔ StringBuffer : 내용 변경 가능
Ch9 - 16. StringBuffer의 생성자
▶ StringBuffer의 생성자란?
▷ 배열은 길이 변경 불가
▷ 그래서 공간 부족 시, 배열을 새로 생성해야 함
▷ 새로운 배열을 생성하면?
- 배열 생성
- 기존 배열의 내용 복사
- 참조 주소 변경
결국 성능 저하
▷ StringBuffer는 저장 할 문자열의 길이를 고려하여 적절한 크기로 생성
public StringBuffer(int length) { // length : 적잘한 크기
value = new char[length];
shared = false;
}
▷ StringBuffer의 크기를 지정하지 않으면, 크기는 자동 16이 됨
public StringBuffer() {
this(16);
}
▷ 지정한 문자열의 길이보다 16이 더 크게 버퍼를 생성
public StringBuffer() {
this(str.length() + 16); // str = "abc" 즉 length = 3, 3 + 16짜리가 만들어짐
append(str)
}
Ch9 - 17. StringBuffer의 변경
▶ StringBuffer의 변경이란?
▷ StringBuffer는 String과 달리 내용 변경이 가능
- StringBuffer가 가진 메서드…
append()
: 추가delete()
: 삭제insert()
: 삽입
메서드의 반환 타입 : StringBuffer
▷ StringBuffer의 메서드는 내용 수행 후, StringBuffer의 참조를 반환
Ch9 - 18. StringBuffer의 비교
▶ StringBuffer의 비교란?
▷ StringBuffer는 equals()가 오버라이딩 되어있지 않음
StringBuffer
: 주소 비교
▷ String은 equals()가 오버라이딩 되어있음
String
: 내용 비교
▷ StringBuffer를 String으로 변환 후 equals()로 비교 : 내용 비교
String s = sb.toString();
String s1 = sb2.toString();
System.out.println(s.equals(s1));
// console
true