티스토리 뷰

반응형

String vs StringBuffer vs StringBuilder

String

  • String은 내부의 문자열을 수정할 수 없다.
    즉, String을 수정할 때마다 [힙]영역 참조되는 객체를 수정하는 것이 아닌
    [힙]영역에 계속 객체가 생성되어 [스택]영역의 참조주소가 변한다.

이렇게 문자열을 수정할때마다 새로운 객체를 생성하는 String의 단점을 보완하고자 StringBuffer와 StringBuilder가 나왔다.

StringBuffer, StringBuilder

공통점

  • 버퍼(buffer:데이터를 임시로 저장하는 메모리)에 문자열을 저장한다.
  • 버퍼 내부에서 데이터를 추가/수정/삭제 작업을 진행하기때문에
    String처럼 새로운 객체를 계속생성하지 않는다.

 

차이점

  • 멀티 스레드 환경 : StringBuffer
  • 단일 스레드 환경 : StringBuilder
StringBuffer StringBuilder
Synchronized(thread-safe) Non-Synchronized(not-thread-safe)
여러 쓰레드에서 안전하게 엑세스할 수 있다.
한 번에 하나의 스레드만
StringBuffer 개체의 동기화된 코드에 액세스할 수 있도록
액세스를 제어하는 ​​동기화된 방법
Synchronized 방법이 포함되어있지 않다
속도 느림 빠름
StringBuffer.java
@Override
public StringBuilder append(Object obj) {
    return append(String.valueOf(obj));
}

@Override
public StringBuilder append(String str) {
    super.append(str);
    return this;
}



StringBuilder.java
@Override
public synchronized StringBuffer append(Object obj) {
    toStringCache = null;
    super.append(String.valueOf(obj));
    return this;
}

@Override
public synchronized StringBuffer append(String str) {
    toStringCache = null;
    super.append(str);
    return this;
}

사용법

  • StringBuilder를 StringBuffer로 수정해도됨
StringBuilder sb = new StrinbBuilder();
StringBuilder sb = new StrinbBuilder(16);
StringBuilder sb = new StrinbBuilder("Java");
메소드 설명
append() 데이터 추가
insert (int offset, "삽입글자") 중간에 데이터 삽입
(삽입글자는 문자, 문자열, 숫자 등 모두 가능)
delete(int start, int end) 삭제
deleteCharAt(int index) 몇번째 index 문자를 삭제
StringBuilder reverse() 문자열 순서 뒤집기
replace(int start, int end, String str) startIndex~endIndex 문자열 변경
(문자열 변경)
setCharAt(int index, char ch) 주어진 index문자를 ch문자로 변경
(문자 변경)

참조

  1. https://www.youtube.com/watch?v=0uHQDnYYXKw
    이것이 자바다 - 11.9 StringBuffer, StringBuilder 클래스
  2. https://www.youtube.com/watch?v=cgdGZZRnaJ0
    IQ 7 : StringBuffer와 StringBuilder의 차이점은 무엇입니까?
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함