[Java] StringBuffer

Minuuu·2022년 12월 28일
1

Java

목록 보기
5/18

String Buffer 클래스

  • 문자열을 담기 위한 클래스
  • String처럼 문자열 배열(char[])을 내부적으로 가지고 있다.
  • but, String과 달리 내용을 변경할 수 있다.(mutable)

위 사진과 같이 내용을 변경할 수 있다


String Buffer의 생성자

  • 배열은 길이 변경불가, 공간이 부족하면 새로운 배열 생성해야 함

    ex)arr[5] 1,2,3,4,5를 저장했는데 6을 또 저장하고 싶다면 공간이 부족하다
    위 상황의 해결방법
    1. 새로운 배열 생성
    2. 기존의 배열 내용 복사
    3. 참조 변경(기존 배열의 주소를 새로운 배열 참조로 변경한다)

  • String Buffer는 저장할 문자열의 길이를 고려해서 적절한 크기로 생성
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)
}

StringBuffer의 변경

  • StringBuffer는 String과 달리 내용 변경이 가능
String sb = new StringBuffer("abc");
sb.append("123");

  • append()는 지정 내용을 StringBuffer에 추가 후, StringBuffer의 참조를 반환

StringBuffer의 비교

  • StringBuffer는 equals()가 오버라이딩 되어있지 않다(주소비교)
StringBuffer sb = new StringBuffer("abc");
StringBuffersb2 = new StringBuffer("abc");
System.out.println(sb==sb2); // false
System.out.println(sb.equals(sb2)); // false
  • StringBuffer을 String으로 변환 후에 equals()로 비교해야 한다
String s = sb.toString(); // sb를 String으로 변환
String s2 = sb2.toString();
System.out.println(s.equals(s2)); // true

정리하고 배운점

  • String과의 StringBuffer의 차이점을 알 수 있었다(mutable)
  • 메모리적 관점으로 어떻게 객체를 다루는지 다시한번 짚어볼 수 있었다
profile
꾸준히 한걸음씩 나아가려고 하는 학부생입니다 😄

0개의 댓글