JAVA/포스팅

자바 StringBuilder클래스

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

StringBuilder 클래스는 문자열을 가변적으로 처리하기 위한 클래스로, 문자열을 변경할 수 있는 메서드를 제공합니다. StringBuilder 클래스는 StringBuffer와 유사하지만, StringBuilder는 스레드 동기화가 고려되어 있지 않기 때문에 단일 스레드 환경에서 사용할 때 더 효율적입니다.

주요 특징과 메서드는 다음과 같습니다.

 

1. 가변성 (Mutable)

StringBuilder 객체는 내부의 문자열을 변경할 수 있습니다. 이는 String 클래스와 대조적입니다.

 

2. 동기화 (Non-synchronized)

StringBuilder 클래스는 스레드 동기화가 고려되어 있지 않기 때문에 단일 스레드 환경에서 사용할 때 더 효율적입니다. 멀티스레드 환경에서는 StringBuffer를 고려해야 합니다.

 

3. 생성

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

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

 

4. 문자열 추가 (Append)

append() 메서드를 사용하여 문자열을 추가할 수 있습니다.

builder1.append("Hello");
builder1.append(" ");
builder1.append("World");

append() 메서드는 여러 타입의 데이터도 추가할 수 있습니다.

builder1.append(123);
builder1.append(45.67);

append() 메서드는 연결된 문자열을 반환하기 때문에 연속적인 호출이 가능합니다.

builder1.append("Hello").append(" ").append("World");

 

5. 문자열 삽입 (Insert)

insert() 메서드를 사용하여 특정 위치에 문자열을 삽입할 수 있습니다.

builder1.insert(5, "Java");  // 인덱스 5에 "Java" 삽입

 

6. 문자열 삭제 (Delete)

delete() 메서드를 사용하여 특정 범위의 문자열을 삭제할 수 있습니다.

builder1.delete(0, 5);  // 인덱스 0부터 4까지의 문자열 삭제

 

7. 문자열 역순 (Reverse)

reverse() 메서드를 사용하여 문자열을 역순으로 변경할 수 있습니다.

builder1.reverse();

 

8. 문자열 대체 (Replace)

replace() 메서드를 사용하여 특정 범위의 문자열을 다른 문자열로 대체할 수 있습니다.

builder1.replace(0, 2, "Hi");  // 인덱스 0부터 1까지의 문자열을 "Hi"로 대체

 

9. 문자열 길이 (Length)

length() 메서드를 사용하여 현재 문자열의 길이를 반환할 수 있습니다.

int length = builder1.length();

 

10. 용량 (Capacity)

capacity() 메서드를 사용하여 현재 버퍼의 용량을 반환할 수 있습니다. 버퍼의 크기는 동적으로 조절될 수 있습니다.

int capacity = builder1.capacity();

 

11. 문자열 추출

substring() 메서드를 사용하여 특정 범위의 문자열을 추출할 수 있습니다.

String substring = builder1.substring(2, 5);  // 인덱스 2부터 4까지의 문자열 추출

 

12. toString 메서드

toString() 메서드를 사용하여 StringBuilder를 String으로 변환할 수 있습니다.

String result = builder1.toString();

 

StringBuilder 클래스는 문자열을 동적으로 변경할 수 있는 효율적인 방법을 제공하며, 특히 문자열 조작이 빈번한 상황에서 사용됩니다. 단일 스레드 환경에서는 StringBuffer 클래스와 기능적으로 유사하지만, 스레드 동기화가 필요하지 않을 때 더 효율적입니다.

 

With ChatGPT

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

자바 래퍼(wrapper) 클래스  (0) 2023.11.15
자바 Math클래스  (0) 2023.11.15
자바 StringBuffer클래스  (0) 2023.11.15
자바 String클래스  (0) 2023.11.15
자바 java.lang패키지  (0) 2023.11.15