StringBuffer와 StringBuilder 클래스
✒️ 2025-05-15 11:35 내용 수정
문자열들을 길게 결합할 때 사용
- 가변 클래스(mutable class) : 인스턴스의 값을 변경할 수 있는 클래스
- String 인스턴스의 문자열을 결합하면 내용이 합쳐진 새로운 String 인스턴스가 생성된다.
- String 클래스 참고.
- 문자열을 많이 결합할수록 공간의 낭비, 속도 저하가 발생한다.
- 짧은 문자열을 연결할 때도 String 문자열을 연산자로 연결한 것보다는 조금 더 빠르다.
- StringBuffer와 StringBuilder는 내부에 여유 공간을 두기 때문에 문자열을 합칠 때 메모리에 새롭게 생성하는 과정을 String보다 현저히 생략할 수 있다.
1. StringBuffer 클래스
- 배열을 만들 때 공간을 더 넉넉하게 만든다.
- Buffer를 가진다.
- Thread safty
- 비동기 상황(데이터 접근이 몰리거나 갑자기 데이터가 대량으로 빠져나갈 때) 순서를 지정해서 데이터를 보존할 수 있다.
- 일반적으론 자주 있는 상황이 아니다.
2. StringBuilder 클래스
- StringBuffer 클래스와 동일한 역할을 하지만 Thread safty가 없어 일반적인 상황에서 더 많이 사용된다.
- StringBuilder의
append(String str)메소드는 String의concat(String str)메소드와 다르게 초기화도 필요없고, 문자열을 추가해도 주소값이 바뀌지 않는다. append(String str)을 쓸 때 여러 개를 한 번에 쭉 이어서 쓸 수도 있다.StringBuilder.append(a).append(b);
StringBuilder 인스턴스이름 = new StringBuilder();
- 생성자에 int capacity, String str, CharSequence seq가 들어갈 수 있음
| 메소드 | 설명 |
|---|---|
append(Stirng s) 등 |
인수로 전달된 값을 문자열로 변환 후, 문자열 마지막에 추가 |
delete(int a, int b) |
(a <= x < b) 까지의 인덱스에 해당하는 문자열을 제거함 |
insert(int index, char[] str, int offset, int len) 등 |
인수로 전달된 값을 문자열로 변환 후, 지정 위치에 문자열을 추가 index는 추가할 위치, char[] str은 넣을 문자, 배열 시작 지점(offset), 길이(len) |
insert(int offset, Object obj) |
시작 위치(offset)에 obj를 추가 |
reverse() |
문자열의 인덱스를 역순으로 재배열 |
toString() |
StringBuilder를 String으로 반환 |
replace(int start, int end, String str) |
문자열을 시작 위치부터 마지막 위치까지 매개변수로 받은 String str로 교체 |