StringBuilder와 StringBuffer의 차이

장숭혁·2024년 8월 21일
0

TIL작성

목록 보기
55/60

1. String은 내부 문자열을 수정할 수 없다.

-> String data = "ABC"를 할 경우
data += "DEF"를 한다면 "ABC"와 "ABCDEF" 두가지의 메모리 영역이 생긴다.

data는 메모리 스택 영역에 저장되고 "ABC", "ABCDEF"는 메모리 힙 영역에 저장된다.

2. StringBuilder와 StringBuffer 공통점, 차이점

-공통점

  • 버퍼에 문자열을 저장한다.
  • 버퍼 내부에서 추가, 수정, 삭제 작업을 할 수 있다.
  • 사용법이 같다.

-차이점

  • StringBuffer는 멀티 스레드 환경,단일 스레드 환경에서 사용됨

    • synchronized로 선언되어 있어 스레드 안전(thread-safe)
    • 스레드간 동기화 보장

  • StringBuilder는 단일 스레드 환경에서만 사용됨 (동기화 과정이 없으므로 성능이 더 우수하다.)

-> 멀티 스레드 환경이라면 StringBuffer를 사용해야 한다.

3. 주요 메서드

append(String str):

  • 문자열의 끝에 다른 문자열을 추가
    예: sb.append("Hello") → "Hello"

insert(int offset, String str):

  • 특정 위치에 문자열을 삽입
    예: sb.insert(1, "World") → "HWorldello"

delete(int start, int end):

  • 지정된 범위의 문자를 삭제
    예: sb.delete(1, 3) → "Hlo"

replace(int start, int end, String str):

  • 지정된 범위의 문자열을 새로운 문자열로 대체
    예: sb.replace(0, 5, "Hi") → "Hi"

reverse():

  • 문자열을 뒤집음
    예: sb.reverse() → "olleH"

toString():

  • StringBuffer 또는 StringBuilder 객체를 String으로 변환
    예: sb.toString() → "Hello"

setCharAt(int index, char ch):

  • 특정 인덱스의 문자를 변경
    예: sb.setCharAt(1, 'a') → "Hallo"

capacity():

  • 현재 StringBuffer 또는 StringBuilder 객체의 용량(버퍼 크기)을 반환
    예: sb.capacity()

ensureCapacity(int minimumCapacity):

  • 최소 용량을 보장합니다. 현재 용량이 minimumCapacity보다 작으면, 더 큰 버퍼로 확장

substring(int start, int end):

  • 지정된 범위의 문자열을 반환
    예: sb.substring(0, 4) → "Hell"
profile
코딩 기록

0개의 댓글

관련 채용 정보