Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
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
Archives
Today
Total
관리 메뉴

기록 저장소

[Java #21] lang package_StringBuffer Class 본문

kitri 노트/java

[Java #21] lang package_StringBuffer Class

resault 2019. 3. 27. 12:19

[ StringBuffer Class ]

1. constructor

1)  StringBuffer()
- default 생성자
- 크기 16의 비어있는 임시 저장공간 생성
StringBuffer sb1 = new StringBuffer();

System.out.println("크기" + sb1.capacity() + "문자열 수 : " + sb1.length()); //크기 16, 문자열 수 0


2) StringBuffer(int capacity)
- 인자값만큼의 임시저장 공간 생성
- 통상 8의 배수로 사용함
- 문자열로 StringBuffer를 생성해도 글자수보다 큰 공간이 잡히기 때문에 별 의미 없음 


3) StringBuffer(CharSequence seq) | StringBuffer(String str)
- 문자열을 가지고 임시저장 공간 생성 (문자열의 크기보다 큰 공간이 생성됨)
- CahrSequence는 interface이며, StringBuffer로 구현되어있기 때문에 둘은 같은거나 마찬가지임
StringBuffersb1 = new StringBuffer("hello");
System.out.println("sb1 == " + sb1); //sb1 == hello
System.out.println("크기" + sb1.capacity() + "문자열 수 : " + sb1.length()); //크기 21, 문자열 수 5


4) 추가 내용


▷ StringBuffer의 저장공간을 넘어서면 자동으로 크기가 늘어남
StringBuffer sb1 = new StringBuffer("hello");
sb1.append(" java");
sb1.append(" !!!!!");
System.out.println("sb1 == " + sb1);//hello java !!!!!
System.out.println("크기" + sb1.capacity() + "\t문자열 수 : " + sb1.length()); // 크기 21, 문자열 수 16

sb1.append(" !!!!!!");
System.out.println("sb1 == " + sb1);//hello java !!!!! !!!!!!
System.out.println("크기" + sb1.capacity() + "\t문자열 수 : " + sb1.length()); // 크기 44, 문자열 수 23



2. method


1) capacity()
- 저장공간크기를 int로 반환
StringBuffer sb1 = new StringBuffer("hello");
int cap = sb1.capacity();
System.out.println(cap);


2) length()
- 문자열의 크기를 int로 반환
StringBuffer sb1 = new StringBuffer("hello");
System.out.println("문자열 수 : " + sb1.length());


3) append()
- 문자열을 더해서 StringBuffer로 반환
sb1.append(" java");
System.out.println("2. sb1 == " + sb1);//hello java

- 문자열에 변경을 가하면 새로운 문자열이 생성되는 것과 달리, StringBuffer는 인스턴스 자체가 변경됨
StringBuffer sb1 = new StringBuffer("hello");
sb1.append(" java");
System.out.println("2. sb1 == " + sb1);//hello java

//cf.
String s = "hello";
s.concat("java");
System.out.println(s);//hello


4) charAt(int index)
- index의 문자를 char로 반환


5) insert(int offset, 입력할 data)
- offset index 위치에 인자값을 추가하여 StringBuffer로 반환
StringBuffer sb1 = new StringBuffer(hello java !!!!! !!!!!!);
sb1.insert(10, "@@@");
System.out.println(sb1 == " + sb1); // sb1 == hello java@@@ !!!!! !!!!!!


6) delete(int start, int end)
- start부터 end 위치 전까지 삭제하고 StringBuffer 반환
StringBuffer sb1 = new StringBuffer(hello java !!!!! !!!!!!);
sb1.delete(10, 12);
System.out.println("sb1 == " + sb1); //sb1 == hello java@ !!!!! !!!!!!


7) deleteCharAt(int index)
- index 위치의 문자를 삭제하고 StringBuffer 반환
sb1.deleteCharAt(10);
System.out.println("sb1 == " + sb1); //sb1 == hello java !!!!! !!!!!!

8) indexOf(String str)
- 인자값이 위치한 index를 int로 반환
- 없는 경우에는 -1로 반환

▷ 예제
String str = "hello 자바 !!!";
String findstr = "자바"; // | String findstr = "오라클";
String restr = "java";

//str에 findstr이 있으면 해당 문자열을 restr로 변경하고 (hello java !!!)
//                없으면 (오라클은 없습니다.) 출력



9) replace(int start, int end, String str)
- start 부터 end전까지 str로 대체하고 StringBuffer를 반환
- cf. String의 replace와 비교할 것!
StringBuffer sb1 = new StringBuffer(hello java !!!!! !!!!!!);
sb1.replace(6, 10, "자바");
System.out.println("sb1 == " + sb1); //sb1 == hello 자바 !!!!! !!!!!!


10) reverse()
StringBuffer sb1 = new StringBuffer(hello java !!!!! !!!!!!);
System.out.println("sb1 == " + sb1); // sb1 == !!!!!! !!!!! avaj olleh


11) toString()
- String으로 반환
//StringBuffer를 String으로 변환하는 2가지 방법

//1. String 생성자 이용
String s1 = new String(sb1);

//2. StringBuffer의 toString()이용
String s2 = sb1.toString();



3. 추가내용

▷ 예제
long st = System.nanoTime();
String str = "hello ";
for(int i = 0; i <50000; i++) {
      str += i;
}
System.out.println(System.nanoTime() - st);
st = System.nanoTime();
StringBuffer sb = new StringBuffer("hello");
for(int i = 0; i <50000; i++) {
      sb.append(i);
}
System.out.println(System.nanoTime() - st);
// 결론 : 문자열을 더할때는 StringBuffer로!


'kitri 노트 > java' 카테고리의 다른 글

JTable - DefaultTableModel 사용  (0) 2019.04.08
[Java #22] util package  (0) 2019.03.27
[Java #20] lang package_String Class  (0) 2019.03.25
[Java #19] lang package_Wrapper Class-수정  (0) 2019.03.25
[Java #18] array  (0) 2019.03.25