StringBuilder
StringBuilder 는 자바에서 문자열을 다루기 위한 클래스 중 하나로, 가변(mutable)문자열을 지원합니다. 즉, StringBuilder를 사용하면 문자열을 쉽게 수정, 추가, 삭제, 및 변경할 수 있습니다. 기본적으로 String 클래스는 불변(immutable) 객체로, 한 번 생성된 문자열을 수정할 수 없으므로 새로운 문자열을 생성해야 합니다. 반면, StringBuilder는 내부적으로 문자열을 수정할 수 있도록 설계되어 있어 성능상 이점이 있습니다.
주요 특징
- 가변성 : StringBuilder 는 내부적으로 문자열을 저장하는 배열을 사용하여, 문자열을 변경할 때마다 새로운 객체를 생성하지 않고 기존의 배열을 수정합니다.
- 효율성 : 문자열을 여러 번 수정해야할 경우(예: 반복문에서 문자열을 추가하는 경우) StringBuilder를 사용하는 것이 메모리와 성능 측면에서 효율적입니다.
- 스레드 안전하지 않음 : StringBuilder는 스레드 안전하지 않기 때문에 여러 스레드에서 동시에 접근 하는 경우, 데이터 일관성을 보장하지 않습니다. 멀티 스레드 환경에서는 StringBuffer를 사용할 수 있습니다.
사용법
1. 생성자
StringBuilder 객체를 생성하는 방법은 다음과 같습니다.
StringBuilder sb = new StringBuilder(); // 기본 생성자
StringBuilder sbWithString = new StringBuilder("Hello"); // 초기 문자열을 가진 생성자
2. 문자열 추가
문자열을 추가할 때는 append() 메서드를 사용합니다.
StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!"); // "Hello, World!"
System.out.println(sb.toString());
3. 문자열 삽입
특정 인덱스에 문자열을 삽입할 때는 insert() 메서드를 사용합니다.
sb.insert(5, ","); // "Hello, World!"
System.out.println(sb.toString());
4. 문자열 삭제
문자열의 특정 부분을 삭제할 때는 delete() 메서드를 사용합니다.
sb.delete(5, 6); // "Hello World!"
System.out.println(sb.toString());
5. 문자열 수정
특정 인덱스의 문자를 수정할 때는 setCharAt() 메서드를 사용합니다.
sb.setCharAt(5, ','); // "Hello, World!"
System.out.println(sb.toString());
6. 문자열 길이
StringBuilder 의 문자열 길이를 구할 때는 length() 메서드를 사용합니다.
int length = sb.length(); // 13
System.out.println("Length: " + length);
7. 문자열 역순
문자열을 역순으로 변경할 때는 reverse() 메서드를 사용합니다.
sb.reverse(); // "!dlroW ,olleH"
System.out.println(sb.toString());
8. String 으로 변환
StringBuilder 의 내용을 String 으로 변환하려면 toString() 메서드를 사용합니다.
String str = sb.toString(); // "Hello, World!"
System.out.println(str);
예제
아래는 StringBuilder를 사용한 간단한 예제입니다.
public class StringBuilderExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
// 문자열 추가
sb.append(", World!");
// 문자열 삽입
sb.insert(5, ",");
// 문자열 삭제
sb.delete(5, 6); // ',' 삭제
// 문자열 수정
sb.setCharAt(5, ' '); // ','를 공백으로 대체
// 길이 확인
System.out.println("Length: " + sb.length()); // 13
// 문자열 출력
System.out.println(sb.toString()); // "Hello World!"
// 문자열 역순
System.out.println(sb.reverse().toString()); // "!dlroW olleH"
}
}
반응형
'서버&백엔드 > 🔥 JAVA' 카테고리의 다른 글
String[]을 ArrayDeque<String>로 변환 (0) | 2024.11.17 |
---|---|
JAVA | 문자열 슬라이싱 (1) | 2024.11.03 |
Java | 스트림(Stream) 완전 정복 - 문자형 (0) | 2024.11.03 |
Java | 람다식 (0) | 2024.11.03 |
Java | 스트림(Stream) 완전 정복 - 숫자형 (0) | 2024.11.01 |