본문으로 바로가기

[Java] BufferedWriter vs StringBuilder

category TIL/Java 2022. 5. 10. 10:46

BufferedWriter

  • 비동기적 버퍼 스트림
  • 버퍼가 가득 차면 데이터를 자동으로 비움

 

StringBuilder

변경할 수 있는 문자열
  • 상속 불가

작동 방식

  • 문자 추가 → 개체가 포함할 수 있는 문자 수를 정의하는 속성(StringBuilder.Capacity) 크기와 같을 때까지 길이가 증가
  • 현재 용량을 초과 → StringBuilder.MaxCapacity 값에 도달할 때까지 동적으로 새 메모리 할당
    • Capacity, MaxCapacity가 두 배로 증가

메모리 할당

  • 기본 (최대) 용량 : 16자
  • 기본 최대 용량 : 16자

작업 수행

  • 문자 반복
    • 인덱스만 사용해서 개별 문자를 설정 또는 검색
    • Char[] 에서 문자 기반 인덱싱을 사용하면 성능 저하
      (e.g. append())
      (∵ 각 문자 액세스가 인덱싱할 버퍼를 찾기 위해 연결된 전체 청크 목록을 확인해야함)
  • 텍스트 추가
    • append("")
    • insert(idx, "") : 특정 인덱스 위치(idx)에 추가
  • 텍스트 삭제
    • remove(start, n) : 특정 인덱스 위치(start)에서 시작하는 지정된 수(n)의 문자를 삭제
    • delete(start, end) : 특정 인덱스 위치(start)부터 특정 인덱스 위치(end-1) 까지 삭제
    • clear() : 모든 문자를 제거하고 속성을 0으로 설정
  • 텍스트 수정
    • replace("before", "after") : 문자 또는 문자열을 변경
  • 텍스트 검색
  • 텍스트 역순으로 변경
    • reverse()
  • 문자열로 변환
    • toString()

 


[ 출처 ]

https://docs.microsoft.com/ko-kr/dotnet/api/system.text.stringbuilder?view=net-6.0