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 |