'StringBuffer'에 해당되는 글 1건

  1. 2012.04.19 [StringBuffer]

[StringBuffer]

Development/Java 2012. 4. 19. 18:13

스트링 버퍼는, 바이너리 스트링의 연결 연산자 + 를 구현하기 위해서 compiler 로 사용됩니다. 예를 들어, 다음의 코드

     x = "a" + 4 + "c"
 

(은)는, 이하의 동등한 코드로서 컴파일 됩니다.

     x = new StringBuffer(). append("a"). append(4). append("c")
                           . toString()
 
새로운 스트링 버퍼 (초기 상태에서는 하늘)를 작성해, 각 연산자의 스트링 표현을 스트링 버퍼에 차례로 추가하고 나서, 스트링 버퍼의 내용을 스트링 으로 변환합니다. 이것에 의해, 작성되는 일시적인 스트링의 전체양을 줄일 수가 있습니다.

StringBuffer 의 기본적인 오퍼레이션에는,append 메소드 및 insert 메소드가 있어, 이러한 메소드는 어떤 종류의 데이터도 받는 것이 할 수 있도록 overload 되어 있습니다. 메소드는 각각 주어진 데이터를 효율적으로 스트링 으로 변환해, 스트링중의 문자를 스트링 버퍼에 추가 또는 삽입합니다. append 메소드는 항상, 버퍼의 말미에게 줄 수 있던 문자를 추가해,insert 메소드는 지정된 위치에 문자를 추가합니다.

예를 들어,z 를, 현재 "start" 를 포함한 스트링 버퍼 오브젝트라고 보는 경우,z.append("le") 는 스트링 버퍼의 내용이 "startle" 가 되도록(듯이) 변경하는데 대해,z.insert(4, "le") 라고 하는 메소드 호출은 스트링 버퍼의 내용이 "starlet" 가 되도록(듯이) 작용합니다.

일반적으로, sb 가 StringBuffer 의 인스턴스를 참조하고 있는 경우,sb.append(x) 는 sb.insert(sb.length(),  x) 와 같은 결과가 됩니다.

각 스트링 버퍼에는 capacity가 있습니다. 스트링 버퍼에 포함되는 스트링의 길이가 capacity를 초과 하지 않는 한, 새로운 내부 버퍼 배열을 할당할 필요는 없습니다. 내부 버퍼가 오버플로우 하는 경우, 자동적으로 capacity가 증가합니다.




append (boolean b) 
          boolean 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
append (char c) 
          char 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (char[] str) 
          char 배열 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (char[] str, int offset, int len) 
          char 배열 인수의 부분 배열의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (double d) 
          double 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (float f) 
          float 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (int i) 
          int 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (long l) 
          long 인수의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (Object  obj) 
          인수 Object 의 스트링 표현을 이 스트링 버퍼에 추가합니다.
 append (String  str) 
          이 스트링 버퍼에 스트링을 추가합니다.
delete (int start, int end) 
          이 StringBuffer 의 부분 스트링내의 문자를 모두 삭제합니다.

'Development > Java' 카테고리의 다른 글

[아스키코드 출력]  (0) 2012.04.27
[String에서 한 글자씩 읽기/추출하는 방법]  (0) 2012.04.27
[static]  (0) 2012.04.19
[배열 복사]  (0) 2012.04.09
[시간 측정]  (0) 2012.04.08
Posted by cyj4369
,