[개인공부] StringBuffer 클래스

Walter Mitty·2022년 12월 24일
0

개인공부

목록 보기
26/40
post-thumbnail

StringBuffer 클래스

  • 문자열을 저장하기 위한 클래스
  • String 처럼 문자형 배열(char[])을 내부적으로 가지고 있다.
  • 그러나, String과 달리 내용을 변경할 수 있다(mutable)
    • append() 를 통해 내용을 추가할 수 있다.


  • 배열은 길이 변경불가. 공간이 부족하면 새로운 배열 생성해야 한다.
    ① 내가 길이 5인 배열에 6을 넣고싶은데 공간이 부족하다 → 새로운 배열을 생성해서 넣어준다(보통 길이 2배 짜리로 생성)
    ➁ arr내용을 tmp에 복사
    ➂ 참조변경 (원래 arr와 이어져있던 공간부족한 배열의 참조를 끊고, tmp[0]~를 가리키도록 참조를 변경해줘야한다 = 0x100자리에 0x200을 넣어준다.)


  • StringBufffer는 저장할 문자열의 길이를 고려해서 적절한 크기로 생성해야한다.
    • int length에 적절한 크기를 줘서 적어도 저장할 공간이 부족해서 2배로 늘려주고 복사하는 복잡한 과정이 없도록 해야한다.
    • 만약 String str = "abc"; 라면 str.length()=3, + 16하면 길이가 19인 char[]배열이 만들어진다.

StringBuffer의 변경

  • StringBuffer는 String과 달리 내용 변경이 가능하다.
  • append()는 지정된 내용을 StringBuffer에 추가 후, StringBuffer의 참조를 반환한다.
  • delete() 삭제 메서드
  • insert() 삽입 메서드
    • 반환타입이 다 StringBuffer

계속 .append().append() 이렇게 써도 된다(=메서드 체이닝). 성능상 차이는 없고 코드의 간결함은 챙길 수 있다.

StringBuffer의 비교

  • StringBuffer는 equals()가 오버라이딩 되어있지 않다.
    • 따라서 내용비교가 아닌 주소비교를 한다.
  • StringBuffer을 String으로 변환 한 후에 equals()로 비교해야 한다.

StringBuffer의 생성자와 메서드

  • 보통 StringBuffer(int length)로 원하는 크기만큼의 배열을 만들어 사용한다.
  • append()에 여러타입의 매개변수를 넣어도 문자열로 변환되어 덧붙여진다.





  • insert()는 원하는 위치에 원하는 문자열을 넣을 수 있다.
    • append()는 맨뒤에.

0개의 댓글