StringBuilder 특징

  • 변수 선언 시 객체를 생성하며, 문자열을 자주 수정할 때 사용
  • String과 다르게 가변적인 속성을 가져 문자열 수정이 빠르고 효율적임
  • 단, 멀티스레드 환경에서는 안전하지 않음
  • 크기를 지정하지 않고 객체 생성 시 초기 용량은 16으로 설정됨

 

        String str = "";
        StringBuilder sb = new StringBuilder();

        str = str + "a";
        str = str + "b";
        str = str + "c";    // String은 불변 : 문자열 수정할 때마다 새로운 문자열 객체 생성 >> 메모리 부담

        sb.append("a");
        sb.append("b");
        sb.append("c");    // StringBuilder은 가변 : 문자열 수정 시 기존 객체를 수정 >> 메모리 사용 효율적

 

 

 

 

StringBuilder 주요 메서드

  • append(문자열) : 문자열 추가

         StringBuilder sb = new StringBuilder();
         sb.append("Hello");
         sb.append(" ");
         sb.append("world");
         String result = sb.toString();      // result = "Hello world"


  • insert(인덱스, 문자열) :지정한 위치에 문자열 삽입

         StringBuilder sb = new StringBuilder("Hello");
         sb.insert(5, " world");       // " world"를 인덱스 5에 삽입
         String result = sb.toString(); // result = "Hello world"


  • deleteCharAt(인덱스): 지정된 인덱스의 문자 삭제

         StringBuilder sb = new StringBuilder("Hello world");
         sb.deleteCharAt(5);       // ' ' 문자 삭제
         String result = sb.toString();      // result = "Helloworld"


  • replace(시작인덱스, 끝인덱스, 문자열): 시작위치부터 끝 이전까지의 문자열을 대체

         StringBuilder sb = new StringBuilder("Hello world");
         sb.replace(6, 11, "Java");       // 인덱스 6부터 11 이전까지의 문자열을 "Java"로 대체
         String result = sb.toString();      // result = "Hello Java"


  • reverse(): 문자열을 역순으로 뒤집음

         StringBuilder sb = new StringBuilder("Hello");
         sb.reverse();      // 문자열을 역순으로 변경
         String result = sb.toString();       // result = "olleH"


  • length(): 현재 StringBuilder의 길이를 반환

         StringBuilder sb = new StringBuilder("Hello world");
         sb.replace(6, 11, "Java");      // 인덱스 6부터 11 이전까지의 문자열을 "Java"로 대체
         String result = sb.toString();      // result = "Hello Java"


  • indexOf(문자열): 지정된 문자열이 처음으로 등장하는 인덱스 반환

         StringBuilder sb = new StringBuilder("Hello world");
         int index = sb.indexOf("world");       // index = 6