old/Java
java.lang.StringBuffer/StringBuilder
물 개
2020. 11. 16. 13:51
문자열을 저장하는 String은 내부의 문자열을 수정할 수 없다.
String의 replace() 메소드도 내부의 문자를 대치하는 것이 아니라, 대치된 새로운 문자열을 리턴한다.
String 객체를 + 연산할 때도 마찬가지.
String 타입 변수에 새로운 String 객체를 대입할 수록 그 만큼 Heap 영역에 객체가 쌓여 프로그램 성능을 느리게 한다.따라서 문자열을 변경하는 작업이 많을 경우에는 StringBuffer/StringBuilder를 사용하는 것이 좋다.
이 두 클래스는 내부 버퍼에 문자열을 저장해두고, 그 안에서 추가, 수정, 삭제 작업을 할 수 있도록 설계되어있다.
차이점
StringBuffer : 멀티 스레드 환경에서 사용할 수 있도록 동기화가 적용되어 있어서 스레드에 안전.
StringBuilder : 단일 스레드 환경에서만 사용 가능.
생성자
//매개변수 없는 생성자. 기본 버퍼 크기=16자
StringBuilder sb = new StringBuilder();
//int 매개변수를 갖는 생성자. 버퍼 크기=int값
StringBuilder sb = new StringBuilder(16);
//문자열 매개변수를 갖는 생성자. 버퍼 초기값=문자열
StringBuilder sb = new StringBuilder("Java");
메소드
메소드명 | 설명 |
append(...) | 문자열 끝에 주어진 매개값을 추가 |
insert(int offset, ...) | 문자열 중간(offset 위치)에 주어진 매개값을 추가 |
delete(int start, int end) | 문자열의 일부분(start~end)을 삭제 |
deleteChatAt(int index) | 문자열에서 특정 index의 문자를 삭제 |
replace(int start, int end, String str) | 문자열의 일부분(start~end)을 다른 문자열로 대치 |
reverse() | 문자열의 순서를 뒤바꿈 |
setCharAt(int index, char ch) | 문자열에서 특정 index의 문자를 다른 문자로 대치 |