Back-end/이것이 자바다[신용권 한빛미디어]

StringBuffer, StringBuilder 클래스

Ho's log 2021. 10. 24. 17:25

문자열을 저장하는 String은 내부의 문자열을 수정할 수 없다. 

예를 들어 String의 resplace() 메소드는 내부의 문자를 대치하는 것이 아나라

대치된 새로운 문자열을 리턴,

String 객체를 + 연산할 경우도 마찬가지

 

-> 문자열을 결합하는 + 연산자를 많이 사용하면 할수록 그만큼 String 객체의 수가 늘어나기 때문

프로그램 성능을 느리게 하는 요인이 된다

 

문자열을 변경하는 작업이 많을 경우에는 String 클래스를 사용하는 것 보다

 

java.lang 패키지의 StringBuffer, StirngBuilder 클래스를 사용

 

내부 버퍼(buffer : 데이터를 임시로 저장하는 메모리) 에 문자열을 저장 

추가, 수정, 삭제 작업을 할수 있도록 설계

String 처럼 새로운 객체를 만들지 않고도 문자열을 조작

StringBuffer와 StringBuilder 의 사용 방법은 동일 

차이점은 StringBuffer 는 멀티 스레드 환경에서 사용할 수 있도록 동기화가 적용, 스레드에 안전

StringBuilder는 단이 스레드 환경에사만 사용하도록 설계

 

StringBuilder 클래스는 몇가지 생성자를 제공

기본 생성자 StringBuider()는 16개의 문자들을 저장할 수 있는 초기 버퍼를 만듬

StirngBuilder(int capacity) 생성자는 capacity로 주어진 개수만큼 문자들을 저장할 수 있는 초기 버퍼를 만듬

StringBuilder는 버퍼가 부족할 경우 자동으로 버퍼 크기를 늘리기 때문에 초기 버퍼의 크기는 그다지 중요 X

StringBuilder(String str) 생성자는 str 로 주어진 매개값을 버퍼의 초기값으로 저장

메소드 설명
append(..) 문자열 끝에 주어진 매개값을 추가 
insert(int offset, ...) 문자열 중간에 주어진 매개값을 추가
delete(int start, ine end) 문자열의 일부분을 삭제
deleteChaerAt(int index) 문자열에서 주어진 index의 문자를 삭제
replace(int Start, int end,Stirng str) 문자열의 일부분을 다른 문자열로 대치
reverse() 문자열의 순서를 뒤바꿈
setCharAt(int index, char ch) 문자열에서 주어진 index의 문자를 다른 문자로 대치 

 

append() 와 insert() 메소드는 매개 변수가 다양한 타입으로 오버로딩 되어 있기 때문에

대부분의 값을 문자로 추가또는 삽입 가능 하다 

'Back-end > 이것이 자바다[신용권 한빛미디어]' 카테고리의 다른 글

Array 클래스  (0) 2021.10.24
정규 표현식과 Pattern 클래스  (0) 2021.10.24
StringTokenizer 클래스  (0) 2021.10.24
String 클래스  (0) 2021.10.23
Class 클래스  (0) 2021.10.23