StringBuilder

1. StringBuilder 개요

-J2SE 5.0은 java.lang.StringBuilder 클래스를 추가했다.
-StringBuilder는 Java5 에 추가된 클래스로 StringBuffer와 기능이 같다.
-StringBuffer는 synchronized(동기화) 처리가 되어 있지만 StringBuilder는 그렇지 않다. 동기화를 고려하지 않는다면 StringBuilder를 사용하는 것이 좋다
-StringBuilder는 mutable하며 동기화되지 않았으므로 사용할때 속도가 가장 빠르다

-StringBuilder는 기본적으로 충분한 버퍼를 확보하고 계속 문자열을 추가(Append)하는 방식이다.
-StringBuilder 의 인스턴스는, 복수의 thread로 사용하기에 안전하지 않다. 이러한 동기가 필요한 경우는,StringBuffer (을)를 사용하는 것이 좋다.

  • mutable : 객체를 생성한 이후 속성을 언제든지 바꿀 수 있다는 뜻이다.
  • immutable : 생성한 이후에는 수정이 불가능한 읽기 전용(RedaOnly)를 의미한다.

2. StringBuffer의 메소드

-*StringBuilder append(String str)* : str로 주어진 문자열을 스트링버퍼의 문자열에 추가한다.
-*StringBuilder insert(int offset, String str)* : 정해진 위치에 str로 주어진 문자열을 추가한다.
-*StringBuilder replace(int start, int end, String s)* : 일부 String을 객체로 치환된다.
-*StringBuilder reverse()* : 문자 순서가, 역의 줄 순서의 순서에 치환된다.

jdk 1.5 API 참고

h2.3.StringBuffe예제
bq. 예제1>


package dfi.study.java;

class StringBuilderTest01
{
    public static void main(String[] args)
    {
        StringBuilder sb = new StringBuilder("곰 세마리가 한 집에 있어 아빠 곰, 엄마 곰, 아기 곰~");
        
        System.out.println("1. "+sb);
        
        sb.replace(27,31,"오빠 곰");
        System.out.println("2. "+sb);
        
        sb.setCharAt(2,'네');
        sb.append(", 아기 곰~");
        System.out.println("3. "+sb);
        
        sb.reverse();
        System.out.println("4. "+sb);
    }
}

예제2>
{code}
package dfi.study.java;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class StringBuilderTest02
{
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("Java");
list.add("Web develop");
list.add("Study");

String ret = appendItems(list);
System.out.println("This is = " + ret);
}

private static String appendItems(List<String> list)
{
StringBuilder sb = new StringBuilder();

for (Iterator<String> iter = list.iterator(); iter.hasNext();)
{
sb.append(iter.next()).append(" ");
}
return sb.toString();
}
}


!StringBuilderTest02.jpg!