시소당
public class sample {
public static void main(String []z) {
char ch;
String s1, s2;
StringBuffer sb1 = new StringBuffer();
char charss[] = {'a', 'b', 'c', 'd', 'e', 'f'};
char ch_ary[] = new char[40];
Mycls mc = new Mycls();
System.out.println("------------append");
sb1 = new StringBuffer("AAA");
sb1.append(':'); sb1.append(true);
sb1.append(':'); sb1.append('J');
sb1.append(':'); sb1.append(charss);
sb1.append(':'); sb1.append(charss, 2, 3);
sb1.append(':'); sb1.append(1234);
sb1.append(':'); sb1.append(123456789L);
sb1.append(':'); sb1.append(111.222F);
sb1.append(':'); sb1.append(123456.789);
sb1.append(':'); sb1.append("BBB");
sb1.append(':'); sb1.append(mc);
System.out.println("-----------charAt, setcharAt");
sb1 = new StringBuffer("abcdefg");
ch = sb1.charAt(2);
System.out.println("ch = " + ch);
sb1.setCharAt(3, 'M');
System.out.println("sb1 = " + sb1);
System.out.println("-----------getchars, reverse, toString");
sb1 = new StringBuffer("ABCDEFG");
sb1.getChars(2, 5, ch_ary, 0);
print_charString(ch_ary, 3);
sb1.reverse(); //문자열 역순으로 한다.
System.out.println("sb1 = " + sb1);
System.out.println("sb1.toString= " + sb1.toString());
System.out.println("-----------insert");
sb1 = new StringBuffer("$::::::::#");
sb1.insert(9, true);
sb1.insert(8, 'J');
sb1.insert(7, charss);
sb1.insert(6, charss, 2, 3);
sb1.insert(5, 1234);
sb1.insert(4, 123456789L);
sb1.insert(3, 111.222F);
sb1.insert(2, 12345.6789);
sb1.insert(1, "BBB");
sb1.insert(0, mc);
System.out.println(sb1);
System.out.println("-----------delete,deletecharAt");
sb1 = new StringBuffer("0123456789");
System.out.println("sb1 = [" + sb1 + "]");
sb1.delete(5, 8); //위치 5-7 삭제
System.out.println("sb1 = [" + sb1 + "]");
sb1.deleteCharAt(2);
System.out.println("sb1 = [" + sb1 + "]");
System.out.println("-----------replace");
sb1 = new StringBuffer("abcdefghij");
System.out.println("sb1 = [" + sb1 + "]");
sb1.replace(5, 8, "Java"); //위치 5-7 java로 치환
System.out.println("sb1 = [" + sb1 + "]");
System.out.println("-----------substring");
sb1 = new StringBuffer("abcdefghij");
s1 = sb1.substring(3);
s2 = sb1.substring(3, 6); //위치 3-5 의문자열
System.out.println("sb1 = [" + sb1 + "]");
System.out.println("s1 = [" + s1 + "]");
System.out.println("s2 = [" + s2 + "]");
System.out.println("-----------setLength(10), length");
sb1 = new StringBuffer("abcdefghijkim");
System.out.println("내용 : sb1 = [" + sb1 + "]");
System.out.println("길이 : sb1 = " + sb1.length());
sb1.setLength(10); //문자열 길이 10
System.out.println("내용 : sb1 = [" + sb1 + "]");
System.out.println("길이 : sb1 = " + sb1.length());
System.out.println("-----------ensureCapacity, Capacity");
System.out.println("내용 : 현재의 수치 = " + sb1.capacity());
sb1.ensureCapacity(20); //버퍼용량을 20으로
System.out.println("내용 : 20수치 = " + sb1.capacity());
sb1.ensureCapacity(31);
System.out.println("내용 : 31수치 = " + sb1.capacity()); //현재용량보다 크므로 '현재용량x2+2'
System.out.println("-----------indexOf,lastIndexof");
sb1 = new StringBuffer("AbcdeAbcde");
System.out.println("내용 : sb1 = [" + sb1 + "]");
System.out.println("제일 좌측 c의 위치 : " + sb1.indexOf("c"));
System.out.println("제일 우측 c의 위치 : " + sb1.lastIndexOf("c"));
}
public static void print_charString(char ss[], int n) {
for (int i=0; i<n; i++)
System.out.print(ss[i]);
System.out.println();
}
}
class Mycls {
public int dt = 0;
}
StringBuffer 클레스는 멀티스레드 처리라도 동기가 확보 되지만 그대신, 처리가 무겁게 된다.
이러한 이유때문에 싱클스레드만에서의 이용이 제한된 (동기확보x) 비교적 고속으로 실행 할수있는 이점을 지닌 StringBuilder 클레스가 나왔다.
[출처] StringBuffer클레스의 메소드 활용 예제|작성자 낮달
http://blog.naver.com/kny0619?Redirect=Log&logNo=70024395078