- 문자열을 담기 위한 클래스
- String처럼 문자열 배열(char[])을 내부적으로 가지고 있다.
- but, String과 달리 내용을 변경할 수 있다.(mutable)
위 사진과 같이 내용을 변경할 수 있다
ex)arr[5] 1,2,3,4,5를 저장했는데 6을 또 저장하고 싶다면 공간이 부족하다
위 상황의 해결방법
1. 새로운 배열 생성
2. 기존의 배열 내용 복사
3. 참조 변경(기존 배열의 주소를 새로운 배열 참조로 변경한다)
public StringBuffer(int length){ // 정수값만큼 버퍼크기 할당
value = new char[length];
}
public StringBuffer(){
this(16); // 버퍼 크기를 지정하지않으면 default 16(버퍼크기)
}
public StringBuffer(String str){
this(str.length() + 16); // 지정한 문자열의 길이보다 16 더 크게 버퍼 생성
append(str)
}
String sb = new StringBuffer("abc");
sb.append("123");
StringBuffer sb = new StringBuffer("abc");
StringBuffersb2 = new StringBuffer("abc");
System.out.println(sb==sb2); // false
System.out.println(sb.equals(sb2)); // false
String s = sb.toString(); // sb를 String으로 변환
String s2 = sb2.toString();
System.out.println(s.equals(s2)); // true
- String과의 StringBuffer의 차이점을 알 수 있었다(mutable)
- 메모리적 관점으로 어떻게 객체를 다루는지 다시한번 짚어볼 수 있었다