[Java] String/StringBuffer/StringBuilder

Updated:

String


  • 최초 메모리에 할당된 값이 변하지 않음.
  • 문자열의 수정, 삭제, 연산 작용이 수행되면 새로운 값을 힙 메모리에 할당함.

    → 새로운 값을 메모리에 할당하면서 변환 전 문자열은 그대로 메모리에 Garbage로 남아있으므로 문자열의 변환이 자주 일어나면 메모리에 차지하는 Garbage가 늘어나고 힙 메모리 부족 이슈가 발생될 수 있음.

    → 변하지 않는 문자열을 빈번하게 입출력할 때 유리.

StringBuffer


  • 최초 메모리에 할당된 값을 변동하여 사용 가능.

    → 문자열의 수정, 삭제, 추가가 빈번하게 발생할 경우 유리

    → 동기화를 지원하여 멀티 쓰레드 환경에서 적합

StringBuilder


  • 최초 메모리에 할당된 값을 변동하여 사용 가능.

    → 문자열의 수정, 삭제, 추가가 빈번하게 발생할 경우 유리

    → 동기화를 멀티 쓰레드 환경에 부적합. 단일 쓰레드 환경에서는 StringBuffer보다 성능이 뛰어남

    charAt() 특정 인덱스 위치의 문자 반환
    length() 문자열 길이
    substring() 특정 인덱스 범위 내 문자열을 복사해서 새로 생성된 인스턴스 반환
    append() 문자열 추가
    capacity() 배열 사이즈 (char[] 배열을 여유있게 확보해둠)
    delete(a, b) 인덱스 사이의 문자열 제거
    insert(a, b) 인덱스 사이에 문자열 삽입

참고


  • 자바의 정석
  • https://velog.io/@ohoh7391/BufferedReader-BufferedWirter-%EC%82%AC%EC%9A%A9%EB%B2%95

Tags:

Categories:

Updated:

Leave a comment