JAVA/포스팅

자바 StringBuffer클래스

짜집퍼박사(짜박) 2023. 11. 15. 15:11

StringBuffer 클래스는 가변(mutable)하며, 문자열을 동적으로 변경할 수 있는 클래스입니다. StringBuffer는 String 클래스와 유사하지만, String이 불변(immutable)한 반면에 StringBuffer는 가변하다는 차이가 있습니다. 이 클래스는 스레드에 안전(thread-safe)하도록 구현되어 있어 멀티스레드 환경에서 안전하게 사용할 수 있습니다.

 

주요 특징

 

1. 가변성(Mutable)

StringBuffer 객체는 생성된 후에도 내용을 변경할 수 있습니다. 따라서 문자열을 동적으로 조작할 수 있습니다.

 

2. 동기화(Synchronization)

StringBuffer는 동기화된 메서드로 구성되어 있어 여러 스레드에서 안전하게 사용할 수 있습니다. 하지만, Java 5부터는 StringBuilder 클래스가 도입되면서 동기화를 지원하지 않는 StringBuilder를 사용하는 것이 권장됩니다.

 

3. 생성

생성자를 통해 StringBuilder 객체를 생성할 수 있습니다.

StringBuilder builder1 = new StringBuilder();  // 빈 문자열로 초기화
StringBuilder builder2 = new StringBuilder("Hello");  // 주어진 문자열로 초기화

 

 

주요 메서드

 

1. append()

문자열을 현재 StringBuffer에 덧붙입니다.

StringBuffer buffer = new StringBuffer("Hello");
buffer.append(", World!");
System.out.println(buffer.toString());  // "Hello, World!"

 

2. insert(int offset, ...)

특정 위치에 문자열을 삽입합니다.

StringBuffer buffer = new StringBuffer("Hello");
buffer.insert(5, ", World!");
System.out.println(buffer.toString());  // "Hello, World!"

 

3. delete(int start, int end) 및 deleteCharAt(int index)

주어진 범위나 인덱스에 해당하는 문자열을 삭제합니다.

StringBuffer buffer = new StringBuffer("Hello, World!");
buffer.delete(5, 13);
System.out.println(buffer.toString());  // "Hello!"

buffer.deleteCharAt(0);
System.out.println(buffer.toString());  // "ello!"

 

4. replace(int start, int end, String str)

주어진 범위에 있는 문자열을 새로운 문자열로 교체합니다.

StringBuffer buffer = new StringBuffer("Hello, World!");
buffer.replace(7, 13, "Universe");
System.out.println(buffer.toString());  // "Hello, Universe!"

 

5. reverse()

문자열을 뒤집습니다.

StringBuffer buffer = new StringBuffer("Hello");
buffer.reverse();
System.out.println(buffer.toString());  // "olleH"

 

6. capacity()

현재 버퍼의 용량(capacity)을 반환합니다. 용량은 버퍼에 할당된 메모리의 크기를 나타냅니다.

StringBuffer buffer = new StringBuffer("Hello");
int capacity = buffer.capacity();
System.out.println(capacity);  // 용량은 문자열 길이에 따라 동적으로 조절됨

 

7. length()

현재 문자열의 길이를 반환합니다.

StringBuffer buffer = new StringBuffer("Hello");
int length = buffer.length();
System.out.println(length);  // 5

 

8. setLength(int newLength)

문자열의 길이를 설정합니다. 길이가 줄어들면 잘린 부분이 제거되고, 늘어나면 null 문자로 채워집니다.

StringBuffer buffer = new StringBuffer("Hello, World!");
buffer.setLength(5);
System.out.println(buffer.toString());  // "Hello"

 

StringBuffer 클래스는 StringBuilder와 거의 동일한 메서드를 제공하며, StringBuilder는 동기화를 지원하지 않기 때문에 단일 스레드 환경에서 사용하기에 적합합니다. 만약 멀티스레드 환경이라면 StringBuffer를 사용하는 것이 좋습니다

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 Math클래스  (0) 2023.11.15
자바 StringBuilder클래스  (0) 2023.11.15
자바 String클래스  (0) 2023.11.15
자바 java.lang패키지  (0) 2023.11.15
자바 연결된 예외 (chained exception)  (0) 2023.11.15